0
我正在建立一個分類博客。我有點卡在如何在表單中實現分類。我已經建立了一個有很多通過關係,並希望添加複選框以將博客與多個類別相關聯。我到目前爲止是將類別傳遞給視圖,並且我可以列出它們,但是我無法獲得form_for方法,因爲某些原因。學習rails,試圖構建博客分類
這是我的代碼。
博客模型
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
感謝這似乎工作。我使用了很多通過技巧,Rails演示說,擁有和屬於許多是不太流行的做這種事情的方式。然而,表單邏輯似乎適用於兩者。感謝您的幫助 :) –