1

我正在使用 Rails 3.0、Ruby 1.9.2 和 Plataformatec simple_form gem。此代码适用于 form_for,但不适用于 simple_form_for:

<%= simple_form_for(@provider) do |f| %>
  <% Car.all.each do |c| %>
    <div>
      <%= check_box_tag :car_ids, c.id, @store.cars.include?(c), :name => 'store[car_ids][]' %>
      $<%= c.cost %> | <%= c.description %>
    </div>
  <% end %>
  <div class="actions">
    <%= f.submit "New" %>
  </div>
<% end %>

如何让它与 simple_form_for 一起使用?

提前致谢!

4

2 回答 2

0

问题出在控制器代码中。

在“新”控制器操作中,我不能简单地执行:

@provider = Provider.new(params[:provider])

像往常一样。

相反,我必须分别处理每个参数:

@provider.location = params[:provider][:location] 等...

对于 Car 复选框,我一次将 car_ids 参数中的每个 car_id 添加到“has_many”汽车模型关联中:

car_ids = params[:provider][:car_ids]
car_ids.each do |cid|
  @provider.cars << Car.find(cid)
end

然后我可以打电话:

@provider.save!

它可以正确保存(我最初的问题是它没有保存选定的汽车)。

出于某种原因,我只有在此处发布问题后才能弄清楚这一点。有趣的是它是如何工作的。

谢谢大家的回复!

于 2011-08-13T04:31:17.533 回答
0

您不能simple_form以与form_for.

例如, gem中没有任何check_box_tag方法。simple_form只有inuput您可以使用:as选项指定的字段。所以你的check_box_tag将被转换为

f.input car_ids, ..., :as => :check_box

Checkout Usage、Rdoc 和其他有用的东西https://github.com/plataformatec/simple_form

于 2011-08-11T17:09:31.770 回答