Rails 3.2 form_for用于所有数据库条目

时间:2014-02-16 10:46:57

标签: ruby-on-rails form-for

我想创建一个页面,我可以一次编辑所有条目。 例如,我有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

有没有人有线索?

由于

2 个答案:

答案 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>