如何知道页面是在Rails中呈现还是重定向?

时间:2018-07-17 06:38:50

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2 rendering

点击帐户表单的“ 保存”按钮后,页面会呈现给编辑帐户本身,因为验证确实没有成功通过。我需要知道在执行验证操作后,表单将被重定向或呈现。
请帮忙。预先感谢

3 个答案:

答案 0 :(得分:0)

通常更新方法如下。

def update
  @article = Article.find(params[:id])

  if @article.update(article_params)
    redirect_to @article
  else
    render 'edit'
   end
end

保存时,将调用update方法。选中此方法,如果@article成功更新,它将重定向到显示页面,否则将呈现编辑页面。

答案 1 :(得分:0)

一些简单的解决方案:

  • 当您在控制器中决定是重新渲染还是重定向时,还要设置一个实例变量,您可以在视图中进行检查
  • 呈现表单时,检查您正在编辑的对象是否为valid?(如果成功保存,则返回true,否则返回false)

尚不清楚您为什么需要此信息,我希望您已经显示了验证错误?简单表单将自动执行此操作(在字段上)。如果您自己进行操作,则可以遍历@<your-object>.errors.messages

答案 2 :(得分:0)

我想您要的是在编辑页面上时是否已执行更新操作。常规方法是检查@article对象上的错误:

<%- if @article.errors.blank? %>
  No errors so hasn't been run through update action
<% else %>
  Has been run through update and has some errors
<% end %>

或者,您可以在控制器中添加实例变量,然后在页面上检查该变量:

def update
  @article = Article.find(params[:id])
  @run_update = true
  if @article.update(article_params)
    redirect_to @article
  else
    render 'edit'
   end
end

查看:

<%- if @run_update %>
  Has been rendered
<% end %>

这是因为实例变量在重定向后不会持续存在