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

これは、検索条件が満たされたときに機能しますが、フォームが送信される前に、recommend_id が DB に永続化されないため、この検索メソッドは何も返さず、フォーム タグがレンダリングされません。検索のすべての条件が満たされた場合にのみレンダリングされます。検索条件が満たされているかどうかに関係なく、フォームをレンダリングするにはどうすればよいですか?

4

1 に答える 1

1

ビュー/コントローラーを間違った方法で使用しています。

_rating.html.erbという新しいパーシャルを定義する必要があります

そこにあなたのform_tag(有効な値に置き換えてください、私はちょうど例として挙げました)

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

次に、評価のリストをレンダリングする場所はどこでも、たとえばrating/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 に答える