2011-01-29 7 views
2

私はこれがシンプルであるべきだと感じますが、問題を起こしてしまいました。私はHABTMを試しましたが、私はそれが私の必要と考えるものではありません。国has_manyチャンネルチェックボックスを選択

「国」has_many「チャネル」と「チャネル」は「国」に属します。基本的に私はチャンネルのフォームにチェックボックスのある国をリストし、country_idに国の配列を保存したいと思います。ここで

ビューです:

<%= f.label :country_id, "Countries" %><br /> 
<ul style="padding: 0; margin: 0;"> 
    <% for country in Country.find(:all) %> 
    <li style="list-style: none;"> 
     <%= check_box_tag "channel[country_ids][]", :name => "channel[country_ids][]" %> 
     <%= label_tag country.id, country.name %> 
    </li> 
    <% end %> 
</ul> 

country.rb

class Country < ActiveRecord::Base 
    has_many :channel 
    has_many :satellites 
    has_many :statistics 
    has_many :testimonies 
    has_many :videos 
    attr_accessible :name, :coords 

    def hash 
    name.gsub(" ", "_").downcase 
    end 
end 

channel.rb

class Channel < ActiveRecord::Base 
    belongs_to :countries 
    attr_accessible :name, :logo, :country_id 
end 

私は統計、衛星と同じことをやっているつもりです、証言、ビデオも同様です。

何か助けていただければ幸いです。ありがとう!

FYI私はRailsのでは2.3.8とRailsのない3

+0

ね... "COUNTRY_ID諸国の配列を保存"? – tybro0103

答えて

0

これをやってるあなたは言う:

が COUNTRY_ID

あなたの国々の配列を保存チャンネルにcountry_idを指定すると、チャンネルが1つの国に属することを意味します。あなたが好きなように聞こえますが、多くの国を持つチャンネルがほしいと思っています...おそらくM:Mの関係ですか?いずれにせよ、あなたは、少なくともあなたが達成しようとしているものではないにしても、モデルのcountry_idまたは任意のフィールドに "配列を保存"することはできません。

また、belongs_to :countriesbelongs_to :country

2

あなたがチャンネルテーブルにストア文字列フィールドで国IDのリストにしたいことを意味している場合、これは私はそれを行うだろうかである必要があります:

(私はそれがRailsの2.3に働くだろう100%わからないんだけど、それはをすべきで、多分少し微調整が必​​要な場合があります)フォームビューで

モデルで
<% Country.find(:all).each do |country| %> 
    <%= check_box_tag "channel[country_ids][#{country.id}]", country.id, false, :name => "channel[country_ids][]" %><%= label_tag "country[country_ids][#{country.id}]", country.description %> 
<% end %> 

class Channel < ActiveRecord::Base 

    before_create :prepare_for_create 

    attr_accessible :country_ids 


    def prepare_for_create 
    self.country_ids = self.country_ids.join(",") 
    end 
end 
関連する問題