0

我的 form_tag 设置如下:

<% Rating.find(:all, :conditions => ["recommendation_id = ? and rating_set = ? and product_id = ?", rec.id, params[:rating_set_id], params[:product_id]]).each do |rate| %>
            <%= text_field_tag "recommendation_ratings[#{rec.id}][notes]", "#{rate.notes}", :id => "rec_note_text", :placeholder => 'Enter Notes..'%>
                <% end %>

这在满足查找条件时有效,但是在提交表单之前,recommension_id 不会持久化到数据库中,因此此查找方法不会返回任何内容,这会导致我的表单标签不呈现。它仅在满足查找的所有条件时才呈现。无论是否满足查找条件,如何呈现我的表单?

4

1 回答 1

1

您以错误的方式使用视图/控制器。

您应该定义名为_rating.html.erb的新部分

在那里你的form_tag(请用有效值替换,我只是举个例子)

<%= text_field_tag "recommendation_ratings[#{id}][notes]", "#{notes}", :id => "rec_note_text", :placeholder => 'Enter Notes..'%>

然后,无论您在何处呈现该评级列表,例如在评级/show.html.erb 中

<%= render @ratings%>

在 Ratings_controller 中,您应该输入:

define show
  @ratings = Ratings.find_all_with_conditions
end

在模型 Rating.rb 中,您应该输入:

define self.find_all_with_conditions
  Rating..find(:all, :conditions => []) #put your logics here for finding all
end

我只是写了一个例子,你应该如何组织它,我并没有把所有有效的参数都放在里面,我只是为了让你看看如何组织你的视图。

我希望它会有所帮助。

于 2013-02-26T09:58:32.127 回答