我是 Rails 的新手。我有两个模型:Form 和 FormType。一个 form_type 可以有零个或一个表单。一个表单只属于一个 form_type。为此,我创建了如下模型:
class FormType < ActiveRecord::Base
has_one :form
attr_accessible :name
end
class Form < ActiveRecord::Base
belongs_to :form_type
validates :name, :presence => true
validates_presence_of :form_type
attr_accessible :name, :enabled
end
我的 _form.html.erb 如下
<%= simple_form_for(@form, :html => { :class => 'form-horizontal' },
:url => @form.new_record?() ? admin_forms_path : admin_form_path,
:method => @form.new_record?() ? 'post':'put' ) do |f| %>
<div class="form-inputs">
<%= f.input :name, :required => true, :autofocus => true %>
<%= f.association :form_type,:required => true, :hint => "select type" %>
<%= f.input :enabled %>
</div>
<div class="form-actions">
<%= f.button :submit, :class => 'btn-primary' %>
<% if ! @form.new_record?() %>
<%= link_to t('.destroy', :default => t("helpers.links.destroy")),
admin_form_path(@form),
:method => 'delete',
:confirm => t('.confirm', :default => t("helpers.links.confirm")),
:class => 'btn btn-danger' %>
<% end %>
</div>
<% end %>
这是我的控制器代码。
def create
@form = Form.new
@form.name = params[:form][:name]
@form.enabled = params[:form][:enabled]
@form.form_type_id = params[:form][:form_type_id].to_i
if @form.save
redirect_to :action => 'index'
else
render action: "new"
end
结尾
我可以看到为名称字段触发了服务器端验证,但无法验证关联。谁能指出我的错误或一些有用的文章来解决这个问题。