1

Rails 3.0、Ruby 1.9.2、Plataformatecsimple_formgemを使用しています。このコードは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

simple_formと同じように正しく使用することはできませんform_for

たとえば、 gemにはcheck_box_tagメソッドがありません。オプションで指定できるフィールドsimple_formのみがあります。だからあなたはに変換されますinuput:ascheck_box_tag

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

チェックアウトの使用法、Rdocおよびその他の有用なものhttps://github.com/plataformatec/simple_form

于 2011-08-11T17:09:31.770 に答える
0

問題はコントローラーコードにありました。

「新しい」コントローラーアクションでは、単純に実行することはできません。

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

通常のように。

代わりに、各パラメーターを個別に処理する必要があります。

@provider.location = params [:provider] [:location]など..

[車]チェックボックスでは、car_idsパラメータの各car_idを一度に1つずつ「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 に答える