1

이라는 보조자가 Order 인스턴스를 반환합니다. OrderUserAddress의 중첩 특성을 허용합니다.중첩 모델이있는 레일 form_for에서 양식 값을 기억하지 못하는 이유는 무엇입니까?

<%= form_for user_order, :url => checkouts_path, :method => :post do |order| %> 
    <%= order.fields_for :user_attributes do |user| %> 
    <%= user.text_field :email %> 
    <% end %> 
<% end %> 

Order.rb 모델 코드 :

belongs_to :user 
accepts_nested_attributes_for :user 
validates_associated :user 
attr_accessible :user 

컨트롤러 코드 : user.email에 대한

def new 
    @order = user_order # user_order is a method to get order from session 
end 

def create 
    @order = user_order 
    if @order.update_attributes(params[:order]) 
    redirect_to @order 
    else 
    render :new 
    end 
end 

값이 기억되지 않을 때 양식 내 (약칭 함) 형태는 다음과 같다 오류와 함께 제출되고 양식이 다시 렌더링됩니다.

왜 그럴 수 있습니까?

+1

난 당신이 – Matthew

+0

을이 제발 알아 내기 위해 컨트롤러 코드를 게시 할 필요가 있다고 생각 모델 간의 관계를 보여줍니다. – dombesz

+0

모델/컨트롤러를 포함하도록 코드를 업데이트했습니다. –

답변

0

실험 후, 나는이 작동하는지 알아 냈 :

컨트롤러 :

def new 
    @order = Order.new 
    @order.build_user 
end 

보기 :

<%= form_for @order do |order_fields| %> 
    <%= order_fields.order.fields_for :user do |user_fields| %> 
    <%= user_fields.text_field :email %> 
    <% end %> 
<% end %> 
0

레일즈 콘솔에서 해당 컨트롤러 코드를 시도해보고 작동했는지 확인 했습니까?

development.log 파일에 양식 제출시 SQL 삽입 문이 실제로 표시되는 것으로 보입니까?

편집 : 다시 읽으면 삽입하는 중입니다. nm의 두 번째 질문, 비록 거기에 여전히 몇 가지 정보가있을 수 있습니다.

+0

양식을 성공적으로 제출하면 모든 것이 작동하므로 컨트롤러 코드가 작동하고 있다고 확신합니다. 저장된 값이 표시되지 않는 오류가 발생하는 것입니다. –

+0

그러나 양식과 동일한 매개 변수로 실행하면 전자 메일 매개 변수가 삭제됩니까? 나는 이것이 application.html.erb, fyi의 맨 아래에 두는 것이 유용하다는 것을 알았다. <% = debug (params), Rails.env.development? %> – erictheavg

관련 문제