나는 실제로 많은 하위 카테고리에 연습을 연결해야하는 앱을 만들고 있는데, 하위 카테고리는 상위 카테고리의 하위 항목입니다.Rails 3.2 카테고리 및 하위 카테고리
Exercice.rb belongs_to : 하위 범주
class Exercice < ActiveRecord::Base
attr_accessible :title, :description, :subcategory_id
validates :title, :presence => true
has_many :programmeexercices
has_many :programmes, :through => :programmeexercices
belongs_to :subcategory
end
category.rb has_many : exercices을 통해 : 하위 범주 & has_many :
이
내 코드 하위 범주class Category < ActiveRecord::Base
attr_accessible :name
has_many :exercices, :through => :subcategories
has_many :subcategories
end
카테고리를 &을 has_many : belongs_to를 subcategory.rb
class Subcategory < ActiveRecord::Base
attr_accessible :name, :category_id
belongs_to :category
has_many :exercices
end
exercices Exercices_controller
def new
@exercice = Exercice.new
@subcategories = Subcategory.all
end
def edit
@exercice = Exercice.find(params[:id])
@subcategories = Subcategory.all
end
def create
@exercice = Exercice.new(params[:exercice])
params[:subcategories][:id].each do |subcategory|
if !subcategory.empty?
@exercice.subcategory.build(:subcategory_id => subcategory)
end
end
Category_controller
def new
@category = Category.new
end
def edit
@category = Category.find(params[:id])
end
def create
@category = Category.new(params[:category])
end
Subcategory_controller
def new
@subcategory = Subcategory.new
@categories = Category.all
end
def edit
@subcategory = Subcategory.find(params[:id])
@categories = Category.all
end
def create
@subcategory = Subcategory.new(params[:subcategory])
params[:categories][:id].each do |category|
if !category.empty?
@subcategory.category.build(:category_id => category)
end
end
Exercice의 _form보기는 내가 원하는 : 운동에 대한 하위 범주를 할당
<li id="p-select">
<% for subcategory in Subcategory.find(:all) %>
<div class="row">
<section class="twelve columns">
<article class="valign row">
<div>
<label class="checkbox">
<%= check_box_tag "checkboxInput", subcategory.id, @exercice.subcategories.include?(subcategory) %>
</label>
</div>
<div>
<h3><%= exercice.title %></h3>
</div>
</article>
<% end %>
</section>
</div>
</li>
</li>
하위 카테고리 _form보기 내가하고 싶은 : 하위 범주에 대한 범주를 할당
<li class="field">
<%= f.label :category %><br />
<%= f.collection_select(:category_id, @categories, :id, :name, :include_blank => "Please select") %>
</li>
양식이 무엇이든간에 오류 메시지가 표시됩니다.
,=> 하위 범주/새로운 :
NoMethodError in Subcategories#new
undefined method `category_id' for #<Subcategory:0x4f676b8>
app/views/subcategories/_form.html.erb:16:in `block in _app_views_subcategories__form_html_erb___180268787_42055560'
app/views/subcategories/_form.html.erb:1:in `_app_views_subcategories__form_html_erb___180268787_42055560'
app/views/subcategories/new.html.erb:3:in `_app_views_subcategories_new_html_erb___1058729489_29352300'
app/controllers/subcategories_controller.rb:30:in `new'
=> exercice/새로운 : 내가 잘못 곳
NoMethodError in Exercices#new
undefined method `subcategories' for #<Exercice:0x4c992c0>
app/views/exercices/_form.html.erb:31:in `block (2 levels) in _app_views_exercices__form_html_erb__725096104_41604048'
app/views/exercices/_form.html.erb:25:in `each'
app/views/exercices/_form.html.erb:25:in `block in _app_views_exercices__form_html_erb__725096104_41604048'
app/views/exercices/_form.html.erb:2:in `_app_views_exercices__form_html_erb__725096104_41604048'
app/views/exercices/new.html.erb:3:in `_app_views_exercices_new_html_erb___924742088_42063192'
app/controllers/exercices_controller.rb:31:in `new'
누구나 알고? 감사합니다 :)
오류에 대해 자세히 설명하는 데 조금 더 집중할 가치가 있습니다. 예를 들어 스택 추적은 무엇입니까? 또한 양식 코드는 약간 혼란스러워 보입니다. 예를 들어'for exercise in Subcategory.find (: all)'는 연습입니까, 하위 범주입니까? – Shadwell
맞습니다. 오류 메시지를 편집했으며 check_box_tag의 내용도 수정했습니다. 오류가 어디에서 왔는지 알 수 없습니까? –
주제에서 벗어나지 만, '운동'의 철자가 틀림 없다는 사실을 깨닫게 된지 1 년 만에 너를 짜증나게 할 것이다. 나는 지금 그것을 교정 할 것이다. – snowangel