0

私はこれでショービューを持っています:

<%= @application.application_name %>
<%= @application.application_field %>

そしてそれはこれを生成します:

Application name: New Employment App [#<ApplicationField id: 1, application_id: 1, applicant_id: nil, field_name: "Previous Job", field_type: "String", created_at: "2012-12-03 04:26:06", updated_at: "2012-12-03 04:26:06">, #<ApplicationField id: 2, application_id: 1, applicant_id: nil, field_name: "Previous Address", field_type: "String", created_at: "2012-12-03 04:26:06", updated_at: "2012-12-03 04:26:06">] 

しかし、もしそうなら:

<%= @application.application_name %>
<%= @application.application_field.field_name %>

エラーが発生します:

undefined method `field_name' for #<ActiveRecord::Relation:0x007ff4ec822268>

なぜこのエラーが発生するのですか?

モデルは次のとおりです

class Application < ActiveRecord::Base
    belongs_to :company
    #has_many :applicants, :through => :application_field
    has_many :application_field
    accepts_nested_attributes_for :application_field, :allow_destroy => true
    attr_accessible :application_name, :application_field_attributes
end

class ApplicationField < ActiveRecord::Base
    belongs_to :application
    has_many :application_fields_value
    #belongs_to :applicant
    attr_accessible :field_name, :field_type, :field_value, :application_field_values_attributes
    accepts_nested_attributes_for :application_fields_value, :allow_destroy => true
end

コントローラーの表示アクション:

# GET /applications/1
  # GET /applications/1.json
  def show
    @application = Application.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @application }
    end
  end
4

3 に答える 3

1
@application.application_field.first.field_name

...実際のオブジェクトを取得する必要があります。

于 2012-12-03T05:22:14.277 に答える
1


class Application < ActiveRecord::Base
   belongs_to :company

  has_many :application_fields
  accepts_nested_attributes_for :application_fields, :allow_destroy => true
  attr_accessible :application_name, :application_fields_attributes
モデルは次のように記述できます。

これで、Applicationオブジェクトには明らかにapplication_fieldsのコレクションが含まれます。

ショーページで次のように表示できるようになりました。

<%= @application.application_name %>
<%= @application.application_fields.map{|af| .field_name}.join(',') %>

于 2012-12-03T06:01:30.457 に答える
1

ここで Application には多くの ApplicationField があります。たとえば、1 つのアプリケーションには 3 つの application_field があります。application.application_field を配置すると、3 つの application_field レコードがすべて収集され、配列に保持されます。したがって、@application.application_field.field_name を入力すると、ARRAY に対して未定義のメソッド「field_name」がスローされます。

      try with <%= @application.application_field[0].field_name %>
于 2012-12-03T05:20:52.080 に答える