0

私はこれについてかなり長い間困惑してきましたが、理解できません。

私は2つのモデルを持っています:

class Vehicle < ActiveRecord::Base
  attr_accessible :year, :capacity,
  :size, :body, :model_id, :maker_id, :parameters_attributes

    validates :year, numericality: { greater_than: 1900 }
    validates :year, :capacity, :size, :body, presence: true

    belongs_to :model
    belongs_to :maker
    has_many :parameters
    accepts_nested_attributes_for :parameters
    end

class Parameter < ActiveRecord::Base
  attr_accessible :tag, :value
  validates :tag, :value, presence: true
  belongs_to :vehicle
end

私が持っている新しい車のビューで:

= form_for [:admin, @vehicle], html: { multipart: true } do |f|
    =# some other stuff in between
    = f.text_field :value, size: 4

このエラーが発生します

undefined method `value'

それを機能させることができないようです。誰か助けて?

routes.rb を編集

resources :vehicles 
resources :parameters

resources :makers do
  resources :models
end
4

3 に答える 3

1

ネストされたフォームを使用している場合は、次のようなものが必要です

f.fields_for :parameters do |parameter|

そしてより:

parameter.text_field :value, size: 4

また、コントローラーでいくつかを作成することを忘れないparametersでください。たとえば、次のようになります。

def new
  @vehicle = Vehicle.new
  2.times { @vehicle.parameters.build } #it will create 2 parameters
...
end
于 2013-02-28T12:01:33.127 に答える
0

fを参照すると、このフィールド@vehicleのみが表示されるようです。Parameterそれが失敗する理由です。

補足:

  • Vehicle持っているのにaccepts_nested_attributes_for :parameters持っていないparameters_attributesのでは、うまくいきませんattr_accessible

  • フォームで関係を呼び出したい場合は、使用を検討してくださいfields_for

于 2013-02-28T11:58:49.337 に答える
-1

わかりました、私は物事を台無しにしました。

まず、私はしようとしてきました

def new
  @vehicle = @vehicle.parameters.build
end

したがって、エラーundefined method。しばらくすると、正しい構文にたどり着きました。これは、しばらくしてから追加されたgabrielhilalです。

def new
  @vehicle = Vehicle.new
  @vehicle.parameters.build
end

関係ありません;)「作成」をクリックした後、データベースにレコードを追加しなかったため、まだ問題がありました。validates presence: trueforを設定しましたtagが、値を割り当てていませんでした。それを修正した後、それは魅力のように機能しました。すべての助けをどうもありがとう。

次のパズルに移ります。

于 2013-03-01T09:44:32.380 に答える