加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – redirect_to与render – Michael Hartl的教程

发布时间:2020-12-17 02:22:57 所属栏目:百科 来源:网络整理
导读:通过Hartl的教程,在清单10.42中我们有微博控制器 def create @micropost = current_user.microposts.build(micropost_params) if @micropost.save flash[:success] = "Micropost created!" redirect_to root_url else @feed_items = [] render 'static_pages
通过Hartl的教程,在清单10.42中我们有微博控制器

def create
    @micropost = current_user.microposts.build(micropost_params)
    if @micropost.save
      flash[:success] = "Micropost created!"
      redirect_to root_url
    else
      @feed_items = []
      render 'static_pages/home'
    end
  end

所以在else分支中我们需要放空@feed_items因为渲染
本身并不提供变量.

我的问题是 – 为什么不使用redirect_to root_url
如果是分支,那么这个变量将由控制器动作提供?

解决方法

如果@ micropost.save返回false,则表示您的@micropost无效.换句话说:您有验证错误.可以通过@ micropost.errors访问这些错误.您应该在视图中显示它们,以便用户知道他做错了什么.如果你重定向它将是一个全新的请求,@ micropost.errors将不再可用.这就是他使用渲染的原因.

另一个方面是你想要用用户输入的值重新填充表单.如果重定向这些值也将消失.要通过重定向保留错误和发布的值,您必须将它们保存在会话或其他内容中.相反,渲染视图要容易得多.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读