私は分類されたブログの構築に取り組んでいます。フォームに分類を実装する方法に少しこだわっています。私は多くのスルー関係を設定しましたが、ブログを複数のカテゴリに関連付けるためのチェックボックスを追加したいと思います。これまでのところ、カテゴリをビューに渡すことで、それらを一覧表示できますが、何らかの理由でform_forメソッドを機能させることができません。
これが私のコードです。
ブログモデル
class Blog < ActiveRecord::Base
attr_accessible :body, :title, :image
has_many :categorizations
has_many :categories, through: :categorizations
has_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" }
validates :title, :body, :presence => true
end
カテゴリモデル
class Category < ActiveRecord::Base
has_many :categorizations
has_many :blogs, through: :categorizations
attr_accessible :name
end
分類モデル
class Categorization < ActiveRecord::Base
attr_accessible :blog_id, :category_id
belongs_to :blog
belongs_to :category
end
ブログの新しいコントローラー
def new
@blog = Blog.new
@categories = Category.all
respond_to do |format|
format.html # new.html.erb
format.json { render json: @blog }
end
end
ブログの新しいフォームビュー
<%= form_for(@blog, :url => blogs_path, :html => { :multipart => true }) do |f| %>
<% if @blog.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@blog.errors.count, "error") %> prohibited this blog from being saved:</h2>
<ul>
<% @blog.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :title %><br />
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.file_field :image %>
</div>
<div class="field">
<%= f.label :body %><br />
<%= f.text_area :body %>
</div>
<div class="field">
Categories:
<% @categories.each do |category| %>
<% fields_for "blog[cat_attributes][]", category do |cat_form| %>
<p>
<%= cat_form.check_box :name %>
</p>
<% end %>
<% end %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
このコードは私の失敗点です
<% @categories.each do |category| %>
<% fields_for "blog[cat_attributes][]", category do |cat_form| %>
<p>
<%= cat_form.check_box :name %>
</p>
<% end %>
<% end %>
私は前向きではありませんが、現在学んでいるので、そのいずれかに近づいています。これを達成する方法に関するアドバイス。
ありがとう、CG