2011-08-11 12 views
1

私はRails 3.0、Ruby 1.9.2とPlataformatec simple_form gemを使用しています。このコードは、のform_forで動作しますが、simple_form_forない:Ruby on Rails simple_form_for all.each do

<%= 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で動作するのですか?

ありがとうございます!

+0

「働かないでください」とはどういう意味ですか?何が起こるかを示します。エラーを表示します。私たちが議論できるものを示してください – fl00r

+0

あなたのモデル名が複数形になっている理由は?私は '車'を意味する – fl00r

+0

申し訳ありませんが、モデルは複数化されていない、悪いコピー。 – sizzle

答えて

0

に変換されます。

私は単純に実行することができない「新しい」コントローラのアクションで

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

1は通常どおり。

代わりに、私は別に、各パラメータを処理する必要があります:[:プロバイダ] [:場所] provider.locationの= paramsは@

等...車のチェックボックスについては

、私は各car_idを追加します一度「has_manyの」車モデル協会1にcar_idsパラメータから:

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

は、それから私は呼び出すことができます。

@provider.save! 

これは正しく保存されます(私の最初の問題は、選択したCarsを保存していないということでした)。

何らかの理由で、質問をここに投稿した後でのみ、これを理解することができました。面白いそれはどのように動作します。

ご返信いただきありがとうございます!

0

simple_formは、form_forと同じ方法で使用することはできません。

たとえば、simple_form gemには、メソッドはありません。 オプションで指定できるフィールドは、inuputフィールドのみです。だからあなたのは、問題がコントローラのコードにあった

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

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