【发布时间】:2014-09-06 21:36:13
【问题描述】:
我有以下用户控制器:
class UsersController < ApplicationController
def index
@users = User.all
end
def new
@user = User.new
end
def create
@user = User.new(user_params)
@customer = Customer.new
if @user.save
flash.notice = "User '#{@user.email}' was succefully created."
redirect_to user_path(@user)
else
render 'new'
end
end
def show
@user = User.find(params[:id])
end
private
def user_params
params.require(:user).permit(:email, :password, :password_confirmation, customer_attributes: [:id, :company])
end
end
我有以下用户模型:
class User < ActiveRecord::Base
has_one :customer
accepts_nested_attributes_for :customer, :allow_destroy => true
end
以及以下客户模型:
class Customer < ActiveRecord::Base
belongs_to :user
end
最后是表格:
<%= form_for [@user] do |f| %>
<% if @user.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>
<ul>
<% @user.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :email %><br>
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.label :password %><br>
<%= f.password_field :password %>
</div>
<div class="field">
<%= f.label :password_confirmation %><br>
<%= f.password_field :password_confirmation %>
</div>
<%= f.fields_for :customers do |company| %>
<div class="field">
<%= company.label :company %><br>
<%= company.text_field :company %>
</div>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
当我提交表单时,我在日志中看到:`Unpermitted parameters: customers' 但看来我确实允许这样做。
另外,我想在显示和索引视图中显示每个用户的公司名称。我不知道该怎么做。
我记得过去使用build 方法来获得类似工作的东西,但这次我似乎无法弄清楚。
【问题讨论】:
-
将“”替换为“”
标签: ruby-on-rails ruby-on-rails-4