3

我有一個多態關聯形式,我想建立一個嵌套形式,但字段沒有顯示出來:Ruby on Rails的多態協會嵌套屬性,字段沒有顯示

的意見/評論/ _form.html.erb

<%= form_for [@reviewable, @review] do |f| %> 
    <%= f.fields_for :review_images do |i| %> 
    <%= i.file_field :image %> 
    <% end %> 
<% end %> 

review.rb

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 

review_image.rb

class ReviewStyle < ActiveRecord::Base 
    attr_accessible :review_id, :image 
    belongs_to :reviewable, polymorphic: true 
    belongs_to :review 
end 

reviews_controller.rb

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 
+0

呢''<% emd %>是有問題的錯字,或者是它的'answer'。 –

+0

@ParitoshPiplewar它的一個錯字,謝謝 – hellomello

回答

0

我覺得你的問題是在這裏:

<%= 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 

當你建立聯想價值你要注意,你應該使用.build爲複數/多個關聯,並build_奇異

+0

dang,我認爲會是這樣的......但它仍然沒有出現在我看來 – hellomello