如何redirect_to并保留对象的属性

时间:2016-11-07 23:28:33

标签: ruby-on-rails error-handling

  • 我有两个模型,articlescomments
  • articles有很多comments
  • comments不能为空字符串。

articles#index上,我在每篇文章下面都有几个文本字段(用户名,comment_text等),供用户发表评论。

当用户提交空注释时,rails会执行其验证作业,并且comments#create上的保存方法会失败。我现在想回到articles#index并显示相应的错误消息。这是我需要帮助的地方。

似乎我只有两个选择,其中没有一个让我满意。之一:

  1. render articles#index来自comments#create的视图,但我必须以某种方式复制articles#index的所有代码并且用户停留在一个不合适的网址上{comments#create,当他们articles#index呈现时

  2. 或者redirect_to articles#index但我丢失了评论对象。使用flash消息不会在这里为我做,我真的需要保持我的对象具有所有属性

  3. 有没有办法在保留评论对象的同时返回articles#index?这个用例中的最佳实践是什么?

    PS:我希望不要在这里使用任何javascript / ajax。

1 个答案:

答案 0 :(得分:0)

我认为一种合法的方法是设置一个临时会话变量,然后在下一次请求中加载它后清除它。

实现此目的的另一种方法是在查询字符串中的下一个请求中传递params。 像这样:

redirect_to(foo_path, bar_attributes)

其中bar_attributes将是哈希值。