我尝试使用admin命名空间在rails form_for中传入多个对象。我收到的错误是“未定义的方法' model_name' for Array:Class
这是我试图运行的观点:
<%= form_for [:admin, @observation_reads] do |f| %>
<div class="table-responsive">
<table class="table table-bordered table-striped table-hover">
<% @observation_reads.each do |observation_read| %>
<tr>
<ul class="admin-employee">
<td><%= check_box_tag "observation_read_ids[]", observation_read.id %></td>
<td><li><%= observation_read.employee_id_observer %></li></td>
<td><li><%= select_tag(observation_read.id, options_for_select(@readers)) %></li></td>
<td><li><%= select_tag(observation_read.id, options_for_select(@readers)) %></li></td>
<td><li><%= select_tag(observation_read.id, options_for_select(@readers)) %></li></td>
</ul>
</tr>
<% end %>
</table>
</div>
<%= f.submit %>
<% end %>
我希望能够一次传入多个对象,因此我可以将所有对象更新为一次。我认为还有几个问题正在发生。我不知道为什么我在控制器中有一个NilClass,我可以调用我的所有观察结果:
def index
@observation_reads = ObservationRead.all
@readers = Reader.all.map { |reader| [reader.first_name, reader.id] }
end
我有一种感觉,如果我通过此错误,我会遇到路由问题,因为当我使用form_tag重新设置时,我可以{I} no route matches
当我匹配我的路线时。
namespace :admin do
get '', to: 'dashboard#index', as: '/'
resources :readers, only: [:index]
resources :observations
end
我的路线在这里: http://imgur.com/o2o7SHT
任何人都可以帮忙:
以下是我与之合作的观点。我在这篇文章中简化了它。
答案 0 :(得分:1)
您收到错误是因为您将Array
传递给form_for
。
<%= form_for [:admin, @observation_reads] do |f| %>
您应该将ObservationRead
而非ObservationRead.all
的实例传递给form_for
form_for
做了什么?
创建一个允许用户创建或更新属性的表单 一个特定的模型对象。
答案 1 :(得分:0)
这样做,
form_for :observations, url: [:admin, :observations] do
或
form_for :observations, url: admin_observations_path