3

私は次のように2つのモデルを設定しました:

class Sector < ActiveRecord::Base
  attr_accessible :summary, :title, :sector_ids

  belongs_to :platform
end

class Platform < ActiveRecord::Base
attr_accessible :name, :url
    has_many :sectors
end

そして、ここからの例を次のように使用しようとするフォーム:

<%= simple_form_for @platform, :html => { :class => 'form-vertical'} do |f| %>
  <%= f.error_notification %>

  <div class="form-inputs">
    <div class="row-fluid">
        <div class="span12">
            <div class="span6">
              <%=  field_set_tag "General" do %>
    <%= f.input :name %>
    <%= f.input :url %>
<%= f.collection_check_boxes :sector_ids, Sector.all, :title, :title %>

    <% end %>
</div>
</div>
</div>
  </div>

  <div class="form-actions">
    <%= f.button :submit %>
  </div>
<% end %>

それでも、フォームを送信しようとすると、次のエラーが発生します。

保護された属性を一括割り当てできません:sector_ids

ここで何が欠けていますか?適切な関連付けを追加した後、データベースを正常に移行しましたが、Railsは、選択されたセクターIDで何をすべきかを実際には知らないようです。

解決 :

class Sector < ActiveRecord::Base
  attr_accessible :summary, :title

  belongs_to :platforms
end

class Platform < ActiveRecord::Base
attr_accessible :name, :url, :platform_attributes, :sector_ids
    has_many :sectors
end

とビューで:

<%= f.association :sectors, :as => :check_boxes %>

もちろん、まだ実行していない場合は、「」を実行することを忘れないでくださいrake db"migrate。また、変更を適用するためにサーバーを再起動する必要がありました。

これが誰かに役立つことを願っています。

4

2 に答える 2

4

プラットフォーム許可リス​​トに{:sector_ids=>[]}を追加してみてください。

https://github.com/rails/strong_parameters#nested-parameters

于 2013-04-15T17:16:38.583 に答える
2

まず、Sectorのattr_accessibleから:sectors_idsを削除して試してみてください。

上記が機能しない場合(おそらく機能しない可能性があります)、simple_formのドキュメントを参照してください。特に、https://github.com/plataformatec/simple_form#associationsおよびhttps://github.com/plataformatec/simple_form#collectionをお読みください。 -チェックボックス; 最後の1つは、あなたがやろうとしていることを行いますが、アソシエーションでは、has_and_belongs_to_manyアソシエーションを使用します。

最後に、これをチェックしてくださいhttps://github.com/plataformatec/simple_form/issues/341

更新 解決策は、has_and_belongs_to_many関係を作成することです。これは、一部のセクターを1つのプラットフォームに関連付けたいが、同じセクターを他のプラットフォームに関連付けたいためです。それ以外の場合は、チェックボックスは必要ありません。新しいレコードを追加し続けるためのネストされたフォーム。データベースの設計と構造にこの変更を加える必要があります。

于 2012-12-09T19:45:09.500 に答える