【发布时间】:2019-05-17 12:18:03
【问题描述】:
我有一个用户仪表板控制器,在同一个视图中有多个远程表单,供用户更新杂项属性:
class CustomerDashboardController < ApplicationController
def settings
end
end
//settings.html.erb
<div class="info__item">
<p class="info-item__heading">Name: <%= link_to "Edit", "", class: "info-edit__link", id: "user-edit__name", remote: true %></p>
</div>
<div class="info__item">
<p class="info-item__heading">Email: <%= link_to "Edit", "", class: "info-edit__link", id: "user-edit__Email", remote: true %></p>
</div>
jquery ujs 触发器存在于*.js.erb 文件中,其名称与包含表单的相应操作/视图模板相匹配:
//customer-dashboard/settings.js.erb
$('#user-edit__name').hide().after('<%= j render("user-edit-name-form") %>');
$('#user-edit__address').hide().after('<%= j render("user-edit-address-form") %>');
每个表单都正确呈现和更新属性,
但是,当单击带有 remote: true 的单个链接时,它会同时呈现页面上的每个表单部分,而不是仅与具有唯一 id: "" 的链接相关的单个部分
【问题讨论】:
-
只是好奇,您是否可以选择使用
display: none呈现所有表单并切换可见性而不是点击 JS 操作来呈现表单? -
感谢您的回复。是的,这确实有效,并且允许我完全跳过
remote: true,但我希望用户可以选择仅呈现他们要求在适当位置编辑的表单。
标签: jquery ruby-on-rails ujs