我想创建一个页面,我可以一次编辑所有条目。 例如,我有10个设备,此时,我正在创建一个html表,每行都有一个设备,可以编辑每一行而无需额外点击。
我已经尝试过这些东西(index.html.erb)
<% @devices.each do |device| %>
<%= render 'form', locals: { device: @device }%>
or
<%= render 'form', :collection => :device %>
or
<%= render 'form', :device %>
<% end %>
我的表格部分
<%= form_for @device do |f| %>
<td><%= f.submit %></td>
<td><%= f.name%></td>
<td><%= f.type</td>
<td>Style app</td>
<td></td>
<td></td>
<% end %>
但我仍然遇到这个错误 用于NilClass的未定义方法`model_name':Class
有没有人有线索?
由于
答案 0 :(得分:0)
从你的尝试来看,你看起来非常接近。如果您尝试将其渲染为部分内容会怎样?
<% @devices.each do |device| %>
<%= render partial: 'form', locals: { device: device } %>
<% end %>
这里的另一个不同之处是第二行device
参数的范围。
答案 1 :(得分:0)
您需要更改部分...您正在渲染全局变量,您需要渲染局部变量...
所以,这是你的解决方案:
<% @devices.each do |device| %>
<tr>
<%= render 'form', locals: { device: device }%>
</tr>
和
<%= form_for device do |f| %>
在这里,你应该只使用@devices中的@ ...其他地方。
编辑:不要忘记您的<tr></tr>