「Rails4のhas_many throughで多対多のリレーションを実装する」http://qiita.com/samurairunner/items/cbd91bb9e3f8b0433b99
の次回がなかった(からかなり困った)のでビュー周りも紹介する。
前半は上の記事と同じ
参考 http://qiita.com/samurairunner/items/cbd91bb9e3f8b0433b99イメージ画像を作るのは面倒だったので拝借。
これのprojectsがarticlesにprojects_categoriesがarticle_categoriesになったバージョンと考えればいい。
#model
###category model
class Category < ActiveRecord::Base
has_many :article_categories
has_many :articles, through: :article_categories
end
###article model
class Category < ActiveRecord::Base
has_many :article_categories
has_many :categories, through: :article_categories
end
###article_categories model
class ArticleCategory < ActiveRecord::Base
belongs_to :article
belongs_to :category
end
ほぼ上の記事と一緒
##ここからがいよいよ本番ビュー周り
###article controller
def create
@article = Article.new(article_params)
@article.user = current_user
if @article.save
flash[:success] = "as you like"
redirect_to article_path(@article)
else
render 'new'
end
end
......................................................................
private
#ここがポイント category は collection_check_boxesのチェックボックスで複数選択の入力で値を渡す場合arrayで渡ってくるのでcategory_ids: []で受け取ると上手くいった
def article_params
params.require(:article).permit(:any, category_ids: [])
end
そして肝心のビューは
###article new
<%= f.collection_check_boxes :category_ids, Category.all, :id, :name do |ccb| %>
<% cb.label(class: "any")
{ccb.check_box(class: "any") + ccb.text} %>
<% end %>
見たこと無い形だったのでクラスをつけるのに苦労した。
これで指定したタグをつけるタイプのタグ付けを実装できる。
参考
####collection_cheach_box
http://qiita.com/sho012b/items/3a595fde14516081dff5
####model周り
http://qiita.com/samurairunner/items/cbd91bb9e3f8b0433b99
初心者、初投稿なので心配。
記法とかのアドバイスがあったらください。