在多个表单失败时保留URL中的ID

时间:2012-05-14 07:52:09

标签: ruby-on-rails

是的,所以http://localhost:3000/reviews/new/5告诉我的应用为ID为5的产品设置产品评论。但是,当我提交包含虚假信息的表单时,我会在'create'操作中触发此代码:

    @style = Style.find(params[:review][:style_id])
    render 'new'

当页面重新加载时,我得到新的网址http://localhost:3000/reviews,这很好,但是如果我提交虚假信息AGAIN,那么在下一页上加载@style将无法分配。

这是“新”操作中的代码:

    @style = Style.find(params[:id])
    @review = current_user.reviews.build(style_id: params[:id])

我确信这很简单。吃晚餐。

我通过在我的视图中添加if语句来修复它......我改变了:

<%= f.hidden_field :style_id, :value => params[:id] %>

为:

<% if params[:id] == nil %>
    <%= f.hidden_field :style_id, :value => params[:review][:style_id] %>
<% else %>
    <%= f.hidden_field :style_id, :value => params[:id] %>
<% end %>

1 个答案:

答案 0 :(得分:0)

而不是:

<% if params[:id] == nil %>
    <%= f.hidden_field :style_id, :value => params[:review][:style_id] %>
<% else %>
    <%= f.hidden_field :style_id, :value => params[:id] %>
<% end %>

你可以这样做:

<%= f.hidden_field :style_id, :value => @style.id %>