是的,所以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 %>
答案 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 %>