我对我正在关注的教程有疑问。有一个代码的注册部分,当验证未通过时,Rails再次呈现该操作。这一切都运作良好,但显然URL看起来不一样:
http://localhost:3000/signup - 在按下按钮之前
http://localhost:3000/Users - 点击按钮后显示无效的详细信息
这是代码:
@user = User.new(params[:user])
if @user.save
flash[:success] = "Welcome to the Sample Application!"
redirect_to @user
else
render 'new'
end
是否仍然使用redirect_to传递@user对象,以便显示正确的URL 和使用@user输入的详细信息填充表单(使用form_for)?
答案 0 :(得分:0)
调用渲染只是告诉它基本上现在使用那部分。因此,即使渲染的视图不同,URL仍然匹配指定的操作(在本例中为/ Users)。
以下是使用redirect_to的方法:
redirect_to new_user_path(@user)
您也可以使用以下参数显式:
redirect_to some_path({:data => 1, :var => 2})
答案 1 :(得分:0)
不,至少不是真的,因为redirect_to让服务器响应HTTP重定向响应,这使得客户端获取指定的URL。这意味着在新的上下文中调用相应的Rails操作,这使得无法访问像用户对象这样的局部变量。 您唯一能做的就是将用户保存在数据库中(可能在一些特殊的临时表中)然后将id作为get参数传递或将数据保存在cookie中并在被调用的操作中检索它以设置值一个新的用户对象。 但是对我而言,只要拥有正确的网址,这两个选项似乎都不值得。