Ruby on rails Rails:在控制器中创建两个嵌套项,但视图中只显示一个
考虑以下几点: customer.rbRuby on rails Rails:在控制器中创建两个嵌套项,但视图中只显示一个,ruby-on-rails,nested-attributes,Ruby On Rails,Nested Attributes,考虑以下几点: customer.rb module Refinery class Customer < Refinery::Core::BaseModel has_many :users, :class_name => "Refinery::User" accepts_nested_attributes_for :users end end end Refinery::User.class_eval do belong
module Refinery
class Customer < Refinery::Core::BaseModel
has_many :users, :class_name => "Refinery::User"
accepts_nested_attributes_for :users
end
end
end
Refinery::User.class_eval do
belongs_to :customer, :class_name => 'Refinery::Customer'
end
module Refinery
class UsersController
def new
@customer = ::Refinery::Customer.new
# tried using build here as well with no sucess
@owner = @customer.users.new
@inputer = @customer.users.new
# raise @customer.users.length.to_yaml => returns 2 so that works!
end
end
end
<%= form_for @customer do |f| %>
<% if @customer.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@customer.errors.count, "error") %> need to be corrected before continuing:</h2>
<ul>
<% @customer.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<!-- company fields here -->
<%= fields_for :users do |user| %>
<div>
<%= user.label :first_name %>
<%= user.text_field :first_name %>
</div>
<div>
<%= user.label :last_name %>
<%= user.text_field :last_name %>
</div>
<!-- more user fields here etc -->
<% end $>
<% end %>
客户_控制器.rb
module Refinery
class Customer < Refinery::Core::BaseModel
has_many :users, :class_name => "Refinery::User"
accepts_nested_attributes_for :users
end
end
end
Refinery::User.class_eval do
belongs_to :customer, :class_name => 'Refinery::Customer'
end
module Refinery
class UsersController
def new
@customer = ::Refinery::Customer.new
# tried using build here as well with no sucess
@owner = @customer.users.new
@inputer = @customer.users.new
# raise @customer.users.length.to_yaml => returns 2 so that works!
end
end
end
<%= form_for @customer do |f| %>
<% if @customer.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@customer.errors.count, "error") %> need to be corrected before continuing:</h2>
<ul>
<% @customer.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<!-- company fields here -->
<%= fields_for :users do |user| %>
<div>
<%= user.label :first_name %>
<%= user.text_field :first_name %>
</div>
<div>
<%= user.label :last_name %>
<%= user.text_field :last_name %>
</div>
<!-- more user fields here etc -->
<% end $>
<% end %>
new.html.erb
module Refinery
class Customer < Refinery::Core::BaseModel
has_many :users, :class_name => "Refinery::User"
accepts_nested_attributes_for :users
end
end
end
Refinery::User.class_eval do
belongs_to :customer, :class_name => 'Refinery::Customer'
end
module Refinery
class UsersController
def new
@customer = ::Refinery::Customer.new
# tried using build here as well with no sucess
@owner = @customer.users.new
@inputer = @customer.users.new
# raise @customer.users.length.to_yaml => returns 2 so that works!
end
end
end
<%= form_for @customer do |f| %>
<% if @customer.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@customer.errors.count, "error") %> need to be corrected before continuing:</h2>
<ul>
<% @customer.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<!-- company fields here -->
<%= fields_for :users do |user| %>
<div>
<%= user.label :first_name %>
<%= user.text_field :first_name %>
</div>
<div>
<%= user.label :last_name %>
<%= user.text_field :last_name %>
</div>
<!-- more user fields here etc -->
<% end $>
<% end %>
继续之前需要更正:
当我查看此页面时,只显示一个用户。字段的ID也如下所示:
<div>
<label for="users_last_name">Last name</label>
<input id="users_last_name" name="users[last_name]" size="30" type="text">
</div>
姓
我认为应该有某种索引,对吗?(例如,0、1、2等,用于对数组进行迭代
我做错了什么?你错过了比赛
f.fields_for
只要添加它,它就会工作您将错过f字段_for@AnezioCampos嘿,是这样的!把这个作为答案贴出来,我会接受并投票!