2012-03-25 38 views
0

我已经花了大约5个小时在这个,并继续回到广场一...时间要求时间的帮助!Rails 3.2 - 为什么simple_form不会为我的嵌套属性生成任何标记?

我正在使用Rails 3.2,devise和simple_form,我试图构建一个允许用户注册的表单(电子邮件,密码)&允许他们创建一个简单的列表对象 - 全部在一个页面上。然而,当/ listing /新页面加载时,我的用户的嵌套属性没有出现在标记上。我找不到原因。

以下是我有:

上市控制器:

def new 
    @listing = Listing.new 

    respond_to do |format| 
    format.html # new.html.erb 
    format.json { render json: @listing } 
    end 
end 

上市型号:

class Listing < ActiveRecord::Base 
    has_one :address 
    belongs_to :category 
    belongs_to :user 

    accepts_nested_attributes_for :address 
    accepts_nested_attributes_for :user 
end 

用户模式:

class User < ActiveRecord::Base 
    has_many :listings 
    devise :database_authenticatable, :registerable, :validatable 
    attr_accessible :email, :password, :password_confirmation, :remember_me 

end 

新上市形式:

<%= simple_form_for(@listing) do |f| %> 

<%= f.label :listing_type %> 
<%= f.collection_select :listing_type, [["Creative","Creative"]], :first, :last%> 

    <%= f.simple_fields_for :user do |u| %> 
    <%= u.label :email %> 
    <%= u.input_field :email %> 

    <%= u.label_for :password %> 
    <%= u.input_field :password %> 

    <%= u.label_for :password_confirmation %> 
    <%= u.input_field :password_confirmation %> 
    <% end %> 

<% end %> 

我的头融化看着这个,任何帮助非常感谢!

+0

在列表控制器中,我认为您必须为要使用的表单创建/构建新用户。 – user657823 2012-03-25 20:32:08

回答

1

Railscasts' Nested Model Form将是一个很好的教程。

此外,它听起来像你想要做的是调用用户#新,而不是#新的清单。通常你会为其他东西(列表)的东西(用户)做一个表格。所以你想为新用户制作一个表单,而不是新的列表。如果你如果你想保持它,它是如何走这条路线,然后在用户#新在你的控制,这样做

@user = User.new 
@user.listings.build 
.... 

,你也许可以做到

@listing.user.build 

但我我不确定这是否会起作用,因为你正在按照我上面描述的方向做相反的工作。

+0

这解决了我的问题,谢谢你的帮助! – Jason 2012-03-26 00:48:33

1

您需要一个新的用户对象。

变化

<%= f.simple_fields_for :user do |u| %> 

<%= f.simple_fields_for :user, User.new do |u| %> 

它应该是工作。

相关问题