2010-06-13 34 views
5

Vì vậy, đây là kịch bản:Formtastic lồng lĩnh vực hình thức mô hình (Rails 3)

User:

has_one :company 
accepts_nested_attributes_for :company 

Bộ điều khiển:

@user = User.new 
@user.build_company 

Xem:

<% semantic_form_for @user, :url => register_path do |form| %> 

    <h2>User Information</h2> 

    <%= form.inputs %> 

    <h2>Company Information</h2> 

    <% form.semantic_fields_for :company do |company| %> 
    <%= company.inputs %> 
    <% end %> 

    <%= form.buttons %> 

<% end %> 

Sau khi cọ rửa web, SEEMS này thích nó sẽ hoạt động. Tuy nhiên, tất cả những gì tôi nhận được là đầu vào của người dùng. Khối "semantic_fields_for: company" không có kết quả gì cả ...

Tôi có thiếu gì đó ở đây hay đây có phải là lỗi Rails 3 liên quan đến Formtastic không?

Trả lời

4

Bạn cần phải sử dụng "<% =%>" với Rails 3 khối thay vì "<%%>". Do đó, các mã nên là:

<%= semantic_form_for @user, :url => register_path do |form| %> 

    <h2>User Information</h2> 

    <%= form.inputs %> 

    <h2>Company Information</h2> 

    <%= form.semantic_fields_for :company do |company| %> 
    <%= company.inputs %> 
    <% end %> 

    <%= form.buttons %> 

<% end %> 
+0

Thiếu một nhân vật .. gotta thích nó: P – elsurudo

+0

Wow, cảm ơn bạn rất nhiều! Tôi đã dành hơn một giờ để tìm kiếm điều này. – Alex

2

như đối với cú pháp mới rails3, trong điều khiển của bạn, bạn nên sử dụng

@user.company.build

thay vì

@user.build_company

+0

Thực ra, điều này không hiệu quả. Bạn nhận được một tài liệu tham khảo nil ... – elsurudo

+0

thử nghiệm nó trên rails3 beta4. nó hoạt động, đây là một ví dụ lấy từ một bộ điều khiển tôi đã viết: def mới @realty = Realty.new @ realty.ownerships.build (: Person_Id => params [: Person_Id]) respond_to làm | format | format.html # new.html.erb kết thúc kết thúc phương thức build_ * đã được xóa bỏ chắc chắn. –

+1

Nó phù hợp với bạn vì chủ sở hữu has_many @realty của bạn. Khi nó has_one (như trong trường hợp của OP), bạn cần phải sử dụng @ realty.build_ownership –

Các vấn đề liên quan