Ruby on rails RubyonRails:具有嵌套属性的多态关联,字段不显示

Ruby on rails RubyonRails:具有嵌套属性的多态关联,字段不显示,ruby-on-rails,ruby,ruby-on-rails-3,nested-attributes,polymorphic-associations,Ruby On Rails,Ruby,Ruby On Rails 3,Nested Attributes,Polymorphic Associations,我有一个多态关联表单,我想构建一个嵌套表单,但字段没有显示: 查看/评论/_form.html.erb: <%= form_for [@reviewable, @review] do |f| %> <%= f.fields_for :review_images do |i| %> <%= i.file_field :image %> <% end %> <% end %> class Review < Activ

我有一个多态关联表单,我想构建一个嵌套表单,但字段没有显示:

查看/评论/_form.html.erb

<%= form_for [@reviewable, @review] do |f| %>
  <%= f.fields_for :review_images do |i| %>
    <%= i.file_field :image %>
  <% end %>
<% end %>
class Review < ActiveRecord::Base
  attr_accessible :review_styles_attributes
  belongs_to :reviewable, polymorphic: true
  has_many :review_styles
  accepts_nested_attributes_for :review_images, allow_destroy: true
end
class ReviewStyle < ActiveRecord::Base
  attr_accessible :review_id, :image 
  belongs_to :reviewable, polymorphic: true
  belongs_to :review
end
class ReviewsController < ApplicationController
  before_filter :get_reviewable

  def new
    @review = @reviewable.reviews.new
    @review_style = @review.build_review_style
    3.times {@review.review_styles.new}
  end

  def edit
    # not sure what goes here if I need to edit as well
  end

  private
  def get_reviewable
    @reviewable = params[:reviewable].classify.constantize.find(reviewable_id)
  end

  def reviewable_id
    params[(params[:reviewable].singularize + "_id").to_sym]
  end
end

review.rb

<%= form_for [@reviewable, @review] do |f| %>
  <%= f.fields_for :review_images do |i| %>
    <%= i.file_field :image %>
  <% end %>
<% end %>
class Review < ActiveRecord::Base
  attr_accessible :review_styles_attributes
  belongs_to :reviewable, polymorphic: true
  has_many :review_styles
  accepts_nested_attributes_for :review_images, allow_destroy: true
end
class ReviewStyle < ActiveRecord::Base
  attr_accessible :review_id, :image 
  belongs_to :reviewable, polymorphic: true
  belongs_to :review
end
class ReviewsController < ApplicationController
  before_filter :get_reviewable

  def new
    @review = @reviewable.reviews.new
    @review_style = @review.build_review_style
    3.times {@review.review_styles.new}
  end

  def edit
    # not sure what goes here if I need to edit as well
  end

  private
  def get_reviewable
    @reviewable = params[:reviewable].classify.constantize.find(reviewable_id)
  end

  def reviewable_id
    params[(params[:reviewable].singularize + "_id").to_sym]
  end
end
class Review
查看图片.rb

<%= form_for [@reviewable, @review] do |f| %>
  <%= f.fields_for :review_images do |i| %>
    <%= i.file_field :image %>
  <% end %>
<% end %>
class Review < ActiveRecord::Base
  attr_accessible :review_styles_attributes
  belongs_to :reviewable, polymorphic: true
  has_many :review_styles
  accepts_nested_attributes_for :review_images, allow_destroy: true
end
class ReviewStyle < ActiveRecord::Base
  attr_accessible :review_id, :image 
  belongs_to :reviewable, polymorphic: true
  belongs_to :review
end
class ReviewsController < ApplicationController
  before_filter :get_reviewable

  def new
    @review = @reviewable.reviews.new
    @review_style = @review.build_review_style
    3.times {@review.review_styles.new}
  end

  def edit
    # not sure what goes here if I need to edit as well
  end

  private
  def get_reviewable
    @reviewable = params[:reviewable].classify.constantize.find(reviewable_id)
  end

  def reviewable_id
    params[(params[:reviewable].singularize + "_id").to_sym]
  end
end
class ReviewStyle
查看\u controller.rb

<%= form_for [@reviewable, @review] do |f| %>
  <%= f.fields_for :review_images do |i| %>
    <%= i.file_field :image %>
  <% end %>
<% end %>
class Review < ActiveRecord::Base
  attr_accessible :review_styles_attributes
  belongs_to :reviewable, polymorphic: true
  has_many :review_styles
  accepts_nested_attributes_for :review_images, allow_destroy: true
end
class ReviewStyle < ActiveRecord::Base
  attr_accessible :review_id, :image 
  belongs_to :reviewable, polymorphic: true
  belongs_to :review
end
class ReviewsController < ApplicationController
  before_filter :get_reviewable

  def new
    @review = @reviewable.reviews.new
    @review_style = @review.build_review_style
    3.times {@review.review_styles.new}
  end

  def edit
    # not sure what goes here if I need to edit as well
  end

  private
  def get_reviewable
    @reviewable = params[:reviewable].classify.constantize.find(reviewable_id)
  end

  def reviewable_id
    params[(params[:reviewable].singularize + "_id").to_sym]
  end
end
class-ReviewsController
我想你的问题在于:

  <%= f.fields_for :review_images do |i| %>
    <%= i.file_field :image %>
  <% end %>

从您的代码来看,应该是:

  #app/views/reviews/new.html.erb
  <%= f.fields_for :review_styles do |i| %>
    <%= i.file_field :image %>
  <% end %>

  #app/controllers/reviews_controller.rb
  def new
      @review = @reviewable.reviews.new
      @review.review_styles.build
  end
#app/views/reviews/new.html.erb
#app/controllers/reviews\u controller.rb
def新
@review=@reviewable.reviews.new
@review.review_styles.build
结束

你应该注意,当你构建关联值时,你应该使用
.build
进行复数/多重关联,而
build
进行单数关联,那么
是问题中的打字错误,还是
答案
@ParitoshPiplewar是一个打字错误,谢谢你,我想应该是这样的。。。但它仍然没有出现在我的视野中