我有一個嵌套的用戶註冊表單。我想插入3個模型的數據。 User
,Store
和Preference
。關係是User
has_many :stores
和has_one :preference
。如何在Ruby on Rails中使用object.build或build_object使用隱藏字段?
問題我有隱藏的字段不顯示在我的視圖。我沒有正確使用@user.restaurants.build
和@user.build_preference
嗎?
這裏是我的模型:
class User < ActiveRecord::Base
attr_accessible :email, :full_name, :password, :password_confirmation
has_secure_password
validates_uniqueness_of :email
validates_presence_of :full_name
has_many :stores, :dependent => :destroy
has_one :preference, :dependent => :destroy
accepts_nested_attributes_for :stores
accepts_nested_attributes_for :preference
end
class Store < ActiveRecord::Base
attr_accessible :name, :tagline, :address, :city, :postal, :state, :phone, :hours, :user_id
belongs_to :user
end
class Preference < ActiveRecord::Base
attr_accessible :background_fill, :background_position, :body_color, :body_font, :body_size, :heading_color, :heading_font, :heading_size, :layout, :link_color, :logo_color, :logo_size, :logo_font
belongs_to :user
end
我UsersController:
class UsersController < ApplicationController
def new
@user = User.new
@user.stores.build
@user.build_preference
end
筆者認爲:
<%= form_for @user do |f| %>
<% if @user.errors.any? %>
<div class="error_messages">
<h2>There was an error!</h2>
<ul>
<% @user.errors.full_message.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<%= f.label :full_name %>
<%= f.text_field :full_name, :class => "target", :placeholder => "Your full name", :maxlength => "55", :autofocus => "autofocus" %>
<%= f.label :email %>
<%= f.email_field :email, :class => "target", :placeholder => "[email protected]", :maxlength => "55" %>
<%= f.label :password %>
<%= f.password_field :password, :class => "target", :placeholder => "Enter a password", :maxlength => "55" %>
<%= f.label :password_confirmation, "Confirmation" %>
<%= f.password_field :password_confirmation, :class => "target", :placeholder => "Enter your password again", :maxlength => "55" %>
<% f.fields_for :stores do |builder| %>
<%= builder.hidden_field :name, value: params[:name] %>
<%= builder.hidden_field :tagline, value: params[:tagline] %>
<%= builder.hidden_field :address, value: params[:address] %>
<%= builder.hidden_field :city, value: params[:city] %>
<%= builder.hidden_field :state, value: params[:state] %>
<%= builder.hidden_field :postal, value: params[:postal] %>
<%= builder.hidden_field :phone, value: params[:phone] %>
<%= builder.hidden_field :hours, value: params[:hours] %>
<% end %>
<% f.fields_for :preference do |builder| %>
<%= builder.hidden_field :layout, value: params[:layout] %>
<%= builder.hidden_field :background_fill, value: params[:background_fill] %>
<%= builder.hidden_field :background_position, value: params[:background_position] %>
<% end %>
<%= f.submit "Create an Account for Free", :class => "button cta" %>
<% end %>
而且,如果它的任何幫助,我試圖按照本教程on Railscast:http://railscasts.com/episodes/196-nested-model-form-part-1
謝謝!
上帝,我感到很傻。謝謝參觀! –