1

has_many :through 関係を持つ 2 つのモデルがあります。しばらくの間、フォームは問題なく機能しています。私は、クライアント側の検証に取り組むことにしました。その時点で、属性アクセス許可が現れ始めました。

モデルは次のとおりです。

class User < ActiveRecord::Base
  has_many :missions, :through => :participations
  has_many :participations
  accepts_nested_attributes_for :participations
end

class Mission < ActiveRecord::Base  
  has_many :users, :through => :participations
  has_many :participations
end

class Participation < ActiveRecord::Base
  belongs_to :mission
  belongs_to :user
end

`

フォームは次のとおりです (ここで、リソースはユーザーです)。

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :validate => true) do |f| %>
  <%= f.fields_for :missions do |ff| %>
     ....
  <% end %>
<% end %>

client_side_validation_hash' for nil:NilClass) :validate => true を削除すると、フォームは正常に表示されます。 これにより、ミッション属性を表示するリソースに問題があると思われます。モデルに変更を加えると、ミッション フィールドがフォームに表示されなくなります。

ここでいくつかの同様の質問を回答とともに見ましたが(ここからいくつかのアイデアが出てきます)、どれもうまくいきません。私は何を間違っていますか?

4

1 に答える 1

1

行を変更します

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :validate => true) do |f| %>

<%= form_for(@user, :url => registration_path(resource_name), :validate => true) do |f| %>
于 2012-11-11T06:20:10.360 に答える