【发布时间】:2011-06-08 00:56:31
【问题描述】:
我读过: Rails: Pass parameters with render :action?,但我还是有问题。
我的新页面 URL 是:http://localhost:3000/submit?category_id=2。第一次提交表单没有任何问题,但是如果创建失败并且控制器呈现一个新页面,我会收到错误找不到没有 id 的类别,因为没有传递参数。
这是 new.html.erb 和 new/create 控制器的简短版本
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 %>
感谢任何帮助。我已经转了几个小时了。
【问题讨论】:
标签: forms ruby-on-rails-3 new-operator render