현재 차량을 만드는 양식이 있습니다. 당신은 더 make_id
또는 model_id
열이 없는지주의 할 것이다양식을 제출할 때 입력란을 무시하십시오.
class Vehicle < ActiveRecord::Base
attr_accessible :trim_id
belongs_to :trim
end
;처럼 차량 모델은 처음 본다 이는 트림이 모델에 속하고 모델이 제조사에 속하기 때문에 필요하지 않으며 차량 모델에 저장할 필요가 없습니다.
차량 형태에 문제가 생겼습니다. 링크 된 선택 항목이 있습니다. 여기에서 선택하고 모델을 선택한 다음 모델을 선택할 수 있습니다. 당신이주의 바와 같이, 제조업체와 모델 선택 양식 매개 변수가없는
<%= select("", "", Make.all.collect {|p| [ p.value, p.id ] }, {:prompt => 'Select Make'}, {} %>
<%= f.select("", "", options_for_select([]), {:prompt => 'Select Model'}, {} %>
<%= f.select(:trim_id, options_for_select([]), {:prompt => 'Select Trim'} %>
, 따라서 무시됩니다 : 나는 새로운 차량을 만드는 오전하는 경우, 다음 코드는 잘 작동합니다. 이것은 잘 작동하고 차량은 올바르게 저장됩니다.
이 차량을 수정할 때 어려움이 발생합니다. make와 model dummy가 트림에 체인을 선택하기 때문에 처음에는 편집중인 차량의 모델과 모델이 아닌 기본값으로 설정됩니다. 예상되는으로 제조업체와 모델이 아니기 때문에,이 Can't mass-assign protected attributes: make, model
결과,
<%= f.select(:make, Make.all.collect {|p| [ p.value, p.id ] }, {:prompt => 'Select Make'}, {} %>
<%= f.select(:model, options_for_select([]), {:prompt => 'Select Model'}, {} %>
<%= f.select(:trim_id, options_for_select([]), {:prompt => 'Select Trim'} %>
:하지만, 그 결과 나는 같이 내 모델을 업데이트 한 :
class Vehicle < ActiveRecord::Base
attr_accessible :trim_id
belongs_to :trim
has_one :model, :through => :trim
has_one :make, :through => :model
end
을 그리고 폼 업데이트 attr_accessible (그리고 어쨌든 make와 model 컬럼은 존재하지 않는다).
내 질문은 : 새로운 차량 폼을 제출할 때이 필드를 무시할 수있는 방법이 있지만 차량을 수정할 때 올바른 값을 선택하게하는 방법이 있습니까?
감사합니다.
def create
@sale = Sale.new
current_ability.attributes_for(:new, Sale).each do |key, value|
@sale.send("#{key}=", value)
end
@sale.update_attributes(params[:sale].except("date"))
authorize! :create, @sale
if @sale.save
redirect_to @sale, :notice => "Successfully created sale."
else
render :action => 'new'
end
end
당신은 내가 여기에 "날짜"를 제외시켰다 위해 노력하고 있습니다 것 (도 시도 : 날짜)
편집은 다음과 같이 Beerlington의 대답은 당, 내 create
조치를 업데이트 한 -이 중첩되지 않은 속성으로 테스트하는 것이 었습니다.
그러나 아직 날짜가 제출 중임을 알고 있습니다. 해시를 제외한 모든 컨트롤러 작업을 지원할 수 있습니까?
편집 2 : 원래 질문에 대답으로 나는 올바른로 Beerlington의 답변을 표시 한 - 여기 후속 질문 물었다 : Excluding nested form fields in controller action with Hash#exclude before mass_assignment error is generated?
감사합니다. 작동하는 것처럼 보이네요.
vehicles_attributes"=>{"0"=>{"make"=>""}
에 만드시겠습니까? 감사! –원래 질문에 대한 대답으로 올바른 경로에 표시되므로 답변으로 표시됩니다. –