私は Rails の初心者です。Form と FormType の 2 つのモデルがあります。form_type は 0 または 1 つの form を持つことができます。フォームは 1 つの 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
終わり
名前フィールドに対してサーバー側の検証が行われているのを確認できますが、関連付けを検証できません。これを解決するために、誰かが私の間違いや役立つ記事を指摘できますか。