假设我有一个用Rails Form Builder构建的表单.它有一个文本字段,我想使用AJAX和turbo流动态更新输入字段的值.
是否可以从turbo流视图中使用text_field
助手更新相同文本字段的值,而不用新创建的文本字段替换它?
这个Gorails tutorial有类似的用例,但他正在更新一个SELECT标记的值.因此,他使用options_for_select
帮助程序更新了SELECT标记的选项,以便 Select 字段保留在DOM上,而只有选项被替换.
假设我有一个用Rails Form Builder构建的表单.它有一个文本字段,我想使用AJAX和turbo流动态更新输入字段的值.
是否可以从turbo流视图中使用text_field
助手更新相同文本字段的值,而不用新创建的文本字段替换它?
这个Gorails tutorial有类似的用例,但他正在更新一个SELECT标记的值.因此,他使用options_for_select
帮助程序更新了SELECT标记的选项,以便 Select 字段保留在DOM上,而只有选项被替换.
没有内置的方法可以做到这一点,但制作定制的turbo流操作非常容易:
// app/javascript/application.js
Turbo.StreamActions.update_input = function () {
this.targetElements.forEach((target) => {
target.value = this.templateContent.textContent
});
};
# app/views/users/_form.html.erb
<%= form_with model: @user do |f| %>
<%= f.text_field :name %>
<%= f.submit %>
<% end %>
# app/controllers/users_controller.rb
def update
helpers.fields model: @user do |f|
render turbo_stream: turbo_stream.action(
:update_input, f.field_id(:name), "new value"
)
end
end
100
If you need another example:
https://stackoverflow.com/a/76112894/207090