Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 嵌套表单未显示!_Ruby On Rails_Ruby_Nested Forms - Fatal编程技术网

Ruby on rails 嵌套表单未显示!

Ruby on rails 嵌套表单未显示!,ruby-on-rails,ruby,nested-forms,Ruby On Rails,Ruby,Nested Forms,我有一个嵌套的模型结构,如下所示: resources :users, :path => '/' do resources :accounts do resources :characters end end 我试图让accounts#new页面显示这两个表单,但由于某些原因,仅显示accounts表单() 这是git: account.rb class Account < ActiveRecord::Base attr_accessible :a

我有一个嵌套的模型结构,如下所示:

resources :users, :path => '/' do
    resources :accounts do
        resources :characters
    end
end
我试图让
accounts#new
页面显示这两个表单,但由于某些原因,仅显示accounts表单()

这是git:

account.rb

class Account < ActiveRecord::Base
attr_accessible :account_name, :realm
accepts_nested_attributes_for :characters

belongs_to :user
has_many :characters, :dependent => :destroy 

validates :account_name, :presence => 'true',
                    :length => { :in => 4..20 },
                    :uniqueness => 'true'

validates_presence_of :realm
validates_format_of :account_name, :with => /^[A-Za-z\d_]+$/
end
def new 
    @user = User.find(params[:user_id])
    @account = Account.new
    @account.characters.build
end
<%= form_for([@user, @account]) do |f| %>
<div class="field">
<%= f.label :account_name %><br />
<%= f.text_field :account_name %>
</div>
<div class="field">
<%= f.radio_button(:realm, "USWest") %>
    <%= f.label(:realm, "USWest") %>

    <%= f.radio_button(:realm, "USEast") %>
    <%= f.label(:realm, "USEast") %>

    <%= f.radio_button(:realm, "Europe") %>
    <%= f.label(:realm, "Europe") %>

    <%= f.radio_button(:realm, "Asia") %>
    <%= f.label(:realm, "Asia") %>
 </div>     

<%= f.fields_for :character do |character_form| %>

        <div class="field"> 
            Name: <%= character_form.text_field :name %>
        </div> 
    <% end %>

 <div class="actions">
<%= f.submit %>
</div>
<% end %>


\u form.html.erb

class Account < ActiveRecord::Base
attr_accessible :account_name, :realm
accepts_nested_attributes_for :characters

belongs_to :user
has_many :characters, :dependent => :destroy 

validates :account_name, :presence => 'true',
                    :length => { :in => 4..20 },
                    :uniqueness => 'true'

validates_presence_of :realm
validates_format_of :account_name, :with => /^[A-Za-z\d_]+$/
end
def new 
    @user = User.find(params[:user_id])
    @account = Account.new
    @account.characters.build
end
<%= form_for([@user, @account]) do |f| %>
<div class="field">
<%= f.label :account_name %><br />
<%= f.text_field :account_name %>
</div>
<div class="field">
<%= f.radio_button(:realm, "USWest") %>
    <%= f.label(:realm, "USWest") %>

    <%= f.radio_button(:realm, "USEast") %>
    <%= f.label(:realm, "USEast") %>

    <%= f.radio_button(:realm, "Europe") %>
    <%= f.label(:realm, "Europe") %>

    <%= f.radio_button(:realm, "Asia") %>
    <%= f.label(:realm, "Asia") %>
 </div>     

<%= f.fields_for :character do |character_form| %>

        <div class="field"> 
            Name: <%= character_form.text_field :name %>
        </div> 
    <% end %>

 <div class="actions">
<%= f.submit %>
</div>
<% end %>


姓名:

编辑:代码现在可以工作了

您为什么要为“.”创建
字段

您要做的是
,因为这将遍历所有字符,并按照帐户表单中的要求呈现字段。通过调用
f
对象上的
fields\u,可以告诉父窗体它包含嵌套属性

其次,您需要在表单中使用
@account
对象,而不是使用
@user.accounts.build
构建另一个对象。通过这种错误的方式,实际上您正在创建一个新的account对象,而该对象不会预构建任何角色对象


除此之外,您还需要在
帐户
模型中为字符
指定
接受\u嵌套的\u属性,\u以便表单接受它们以及帐户参数。

嘿,谢谢您的回答!我修改了代码,但仍然不起作用:/I我已经编辑了我的问题以更新代码。你能看看还有什么遗漏吗?@imjp:如果你澄清了什么“仍然不起作用”,那么可能是的。@imjp:事实上,我注意到你在表格中犯了一个错误。我回答的中间段修正了这个错误。如果修正了这个问题!我应该把
老兄,那