0

我有一个 BikeShops 模型:

class BikeShop < ActiveRecord::Base
    has_one :user, :as => :profile, :dependent => :destroy
    accepts_nested_attributes_for :user
end

和一个用户模型:

class User < ActiveRecord::Base
    belongs_to :profile, :polymorphic => true
end

我正在尝试在 bike_shops/new 视图中创建一个嵌套表单。这是我的代码:在那里:

<%= form_for(@bike_shop) do |f| %>
        <%= render 'shared/error_messages', object: f.object %>
        <%= f.label :name, 'Shop Name' %>
        <%= f.text_field :name %>

        <%= f.label :street_address, 'Street Address' %>
        <%= f.text_field :street_address %>

        <%= f.label :city, 'City' %>
        <%= f.text_field :city %>

        <%= f.label :state, 'State' %>
        <%= f.text_field :state %>

        <%= f.label :zip_code, 'Zip Code' %>
        <%= f.text_field :zip_code %>

        <%= f.label :phone_number, 'Phone Number' %>
        <%= f.text_field :phone_number %>

        <%= f.label :website, 'Website' %>
        <%= f.text_field :website %>

        <% f.fields_for(:user) do |builder| %>

            <%= builder.label :first_name, 'First Name:' %>
            <%= builder.text_field :first_name %>

            <%= builder.label :last_name, 'Last Name:' %>
            <%= builder.text_field :last_name %>

            <%= builder.label :email, 'Email:' %>
            <%= builder.text_field :email %>

            <%= builder.label :password, 'Password:' %>
            <%= builder.password_field :password %>

            <%= builder.label :password_confirmation, 'Password Confirmation:' %>
            <%= builder.password_field :password_confirmation %>
        <% end %>

        <%= f.submit "Signup My Bike Shop", class: "btn btn-large btn-primary" %>
    <% end %>

@bike_shop 的字段出现,但 has_one @user 的嵌套字段不出现。这是 BikeShops 控制器中的代码:

class BikeShopsController < ApplicationController
  def new
    @bike_shop = BikeShop.new
    @user = @bike_shop.build_user
  end 

我正在关注这个railscast但无法通过获取嵌套表单的字段来显示。任何帮助表示赞赏。

4

1 回答 1

1

您需要使用<%=erb 标签来呈现它,而不仅仅是<%

<%= f.fields_for(:user) do |builder| %>
于 2013-08-17T21:24:22.300 回答