私は読んでいます: Rails: Pass parameters with render :action?しかし、私はまだ問題があります。Rails 3 Render =>パラメータ付きで新規作成
私の新しいページのURLは:http://localhost:3000/submit?category_id=2です。最初にフォームを送信するのは問題なく動作しますが、作成が失敗し、コントローラが新しいページをレンダリングすると、エラーが発生し、パラメータが渡されないためidなしのカテゴリは見つかりません。
はここnew.html.erbのショートバージョンだと新しい/コントローラ
にdef new
...
@category = params[:category_id]
@title = "Submit a review"
end
def create
....
if @review.save
flash[:success] = "New a Created"
redirect_to user_path(@user)
else
@title = "New Review"
render :action => 'new', :category_id => @category
end
end
を作成する1行目以下の私にエラーを与えています。
<h1>Blah, blah, blah<%= "best #{Category.find(@category).name}" %></h1>
<br />
<%= form_for(...) do |f| %>
<%= render 'shared/error_messages', :object => f.object %>
<tr>
<td> <%= select_tag(... %></td>
<td><%= collection_select(...) %><br /> %></td>
<td><%= f.text_field ... %></td>
</tr>
</table>
<%= f.hidden_field :category_id, :value=>@category %>
<div class="actions">
<%= f.submit "Add" %>
</div>
<% end %>
助けてください。私は何時間もサークルに行ってきました。
ありがとうございました。私は@categoryをelse文に移動しました。@category変数が環境コントローラの作成コントローラでnilでないことがわかりました。 ただし、値はまだレンダリングを通過せず、エラーメッセージは同じままです。他のアイデア? – John
更新:すべてをもう一度再入力した後。新しいパラメータは正しいが、elseレンダリングではパラメータは@category = [:review] [:category_id]でなければならない。ご協力ありがとうございました。 – John
おっと、私たちのコメントは交錯しました。それがうまくいくと聞いてよかったです。 –