我有一个项目列表,每个项目都有一个链接以单击以进行编辑。当他们单击该编辑链接时,我正在使用激励来使编辑“模式”表单可见。要编辑的内容的ID在列表的相应链接标签上以id =的形式出现
因此,编辑链接如下所示:
<td><a data-action="click->content#edit" data-target="content.editBtn" id="<%= url_for(content) %>")>Edit</a></td>
想法是,刺激控制器中的content#edit动作将检查并找到其ID,然后使用该ID来编辑右行。
但是,我认为我遇到的问题是,此列表的所有行都有一个具有相同名称的数据目标,并且错误的一个(第一个)被绑定到该目标。
但是,如果我想使每个数据目标都不同,例如将id附加到它之后,现在我在controller.js中有一长串目标,因此没有任何意义。
Phew,希望您也照做。什么是正确的处理方式?
答案 0 :(得分:2)
如果像其他问题似乎表明的那样,将Rails用作后端,则可能有一个更简单的非刺激性解决方案。要使用Stimulus,您需要从服务器或DOM中获取商品的数据,以表格形式显示,然后通过JavaScript向服务器提交具有正确ID的正确表格。为什么不为每个项目的link_to
操作提供一个远程edit
按钮呢? Rails收到对edit
控制器操作的JS请求,您可以使用来自Ruby对象的数据加载模式表单。
如果您对表单上的任何内容使用Stimulus,我将借此机会设计一个Stimulus控制器,该控制器监听ajax->send/error/complete
事件并自动禁用/启用按钮,在按钮上设置加载微调器并关闭模态这些将是可以刺激Stimulus使其非常简单的某些功能的好地方。
答案 1 :(得分:1)
这实际上是 Stimulus 的一个很好的用途,因为它是模块化的。您为每一行添加一个控制器,而不是在页面或表格周围放置控制器。
<tr data-controller="content">
<td>
<a data-action="click->content#edit" data-target="content.editBtn" id="<%= url_for(content) %>")>
Edit
</a>
</td>
</tr>