0

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

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

当页面重新加载时,我得到了新的 URL http://localhost:3000/reviews,这很好,但是如果我再次提交虚假信息,那么在下一页加载 @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 %>
4

1 回答 1

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 %>
于 2012-05-14T09:12:17.947 回答