我的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 %>
这在满足查找条件时有效,但是在提交表单之前,advice_id不会持久保存到DB,因此此find方法不会返回任何内容,这会导致我的表单标记不呈现。它仅在满足查找的所有条件时呈现。无论是否满足查找条件,我如何渲染表单?
答案 0 :(得分: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
我刚刚写了一个例子,你应该如何组织它,我还没有把所有有效的参数放在一起,我只是为你看看如何组织你的视图。
我希望它会有所帮助。