0

f 属性を削除しない限り、ビュー内のネストされたフォームはレンダリングされません。その場合、送信ボタンは機能しません。私には、仕事と雇用主という 2 つのモデルがあります。ここでレールキャストをフォローしています

ジョブ.rb

  attr_accessible :title, :location, :employers_attributes,     
  belongs_to :employers
  accepts_nested_attributes_for :employers

雇用主.rb

 attr_accessible :companyname, :url
 has_many :jobs

jobs_controller.rb

  def new

    @job = Job.new
    @employer = Employer.new
  end

_form.html

<%= form_for(@job) do |f| %>


    <%= f.label :title %>
    <%= f.text_field :title %>


    <%= f.label :location %>
    <%= f.text_field :location %>



  <%= f.fields_for :employers do |builder| %>

        <%= builder.label :companyname, "Company Name" %>
        <%= builder.text_field :companyname %>


        <%= builder.label :url, "Web Address" %>
        <%= builder.text_field :url %>

    <% end %>


  <div class="actions">
    <%= f.submit %>
  </div>

 <% end %>

どんな入力でも素晴らしいでしょう - ありがとう

4

2 に答える 2

2

これは、あなたの仕事に雇用主がいないために起こります。

コードを次のように変更します。

def new
  @job = Job.new
  @job.employer = @job.build_employer
end

あなたの job.rb の変更で:

attr_accessible :title, :location, :employer_attributes,     
belongs_to :employer
accepts_nested_attributes_for :employer
于 2013-05-20T17:17:01.373 に答える
1

この行:

belongs_to :employers

単数でなければなりません:

belongs_to :employer 

この関連付けを使用すると、ネストされたフォームは必要ありません。select for pick Employer を各ジョブに使用できます。

ただし、各ジョブに多くの雇用主が必要であり、各ジョブに多くの雇用主を含めることができる場合は、このスクリーンキャストを参照してください

于 2013-05-20T17:36:13.827 に答える