Вы получаете undefined method 'first_name' for nil:NilClass
, потому что пользователь с таким идентификатором не может быть найден.Вы, вероятно, посылаете неправильный параметр или что-то в этом роде.Как выглядит URL для вашего действия шоу?
edit:
измените ваш метод создания в users_controller.rb на этот
def create
@user = User.new(params[:user])
@user.build_profile
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render json: @user, status: :created, location: @user }
else
format.html { render action: "new" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
После того, как вы изменили этоизмените свою форму в app / views / users / show.html.erb на эту
<h3>Add Profile</h3>
<%= form_for([@user, @user.profile]) do |f| %>
<div class="field">
<%= f.label :first_name %><br />
<%= f.text_field :first_name %>
</div>
<div class="field">
<%= f.label :last_name %><br />
<%= f.text_field :last_name %>
</div>
<div class="field">
<%= f.label :picture %><br />
<%= f.text_field :picture %>
</div>
<div class="field">
<%= f.radio_button(:sex, "male") %>
<%= f.label(:sex, "Male") %>
<%= f.radio_button(:sex, "female") %>
<%= f.label(:sex, "Female") %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
, и она будет работать.Ваша ассоциация профиля пользователя не была построена.