모델이 있습니다. has_many : 하위 범주왜 우리는 다음을 전달해야합니까?
Ajax를 사용하여보기에서 범주 값에 따라 하위 범주 드롭 다운 값을 채우는 코드를 사용하고 있습니다. 여기에 코드입니다 :
_form.html.erb는
<%= f.select :category_id, @categories, {}, :tab_index => 4, :onchange => "#{remote_function(:url => {:action => "populate_subcategories"},
:with => "'category_id='+value")}" %>
<div id = "subcategories_div">
<%= render :partial => "subcategories", :object => @subcategories %>
</div>
deals_controller.rb
def new
@deal = Deal.new
@categories = Category.all.map { |category| [category.name, category.id]}
@subcategories = @categories.first.subcategories.map { |subcategory| [subcategory.name, subcategory.id] }
end
def populate_subcategories
subcategories = Subcategory.where(:category_id => params[:category_id]).map { |subcategory| [subcategory.name, subcategory.id] }
render :update do |page|
page.replace_html 'subcategories_div', :partial => 'subcatgories', :object => subcategories
end
end
그리고 마지막으로 내 질문에,이다
<%= f.select :subcategory_id, subcategories, {}, :tab_index => 5 %>
_subcategories.html.erb 코드 page.replace_html 'subcategories_div', :partial => 'subcatgories', :object => subcategories
왜 우리는 지역 변수로 하위 범주를 정의하고 그것을 객체로 객체에 전달 하는가? 진짜야? 이 레일에서 일반 뷰의 경우와 같이 부분에서 사용할 수 있도록 우리는 인스턴스 변수로이
def populate_subcategories
@subcategories = Subcategory.where(:category_id => params[:category_id]).map { |subcategory| [subcategory.name, subcategory.id] }
render :update do |page|
page.replace_html 'subcategories_div', :partial => 'subcategories'
end
end
사용 @subcategories처럼 쓸 수 있었다. _subcategories.html.erb
<%= f.select :subcategory_id, @subcategories, {}, :tab_index => 5 %>
및 _form.html.erb에서의 또
<div id = "subcategories_div">
<%= render :partial => "subcategories" %>
</div>
이유는 첫 번째 방법은 두 번째 선호 되는가? 부분 변수로 전달할 변수가 하나뿐이기 때문에 그렇습니까? 첫 번째 방법에 대한 성능 향상이 있습니까?
좋아
:object => @hashtags
을 통해 우수한 가독성을 가지고 있다고 생각합니다, 나는, 감사합니다 그것을 얻을 – rubyprince@ (이 [질문] 볼 pan..can http://stackoverflow.com/questions/5247886/rails-query-through-association-limited-to-recent-recent-record/5250758 # 5250758) .. – rubyprince