1
我看过: Rails: Pass parameters with render :action?,但我仍然有问题。Rails 3渲染=>新增参数
我的新网页的网址是: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变量在环境转储的创建控制器中不是零。 但是,该值仍然没有通过渲染,并且错误消息保持不变。任何其他想法? – John 2011-01-12 23:46:50