为什么在Rails中没有注意到redirect_to中的操作?

时间:2016-07-07 18:11:04

标签: ruby-on-rails

这有效:

redirect_to admins_path, email: @user.email, notice: 'Success'

但这并没有引起注意:

redirect_to action: 'show', email: @user.email, notice: 'Success'

为什么设置操作会禁止通知?

Rails 4.1.6

2 个答案:

答案 0 :(得分:2)

我不知道原因,但是如果你看一下here的例子,你会发现你必须写它(我认为)

redirect_to ({action: 'show', email: @user.email}, notice: 'Success')

如果我不得不猜测,admins_path会创建所需的哈希值,而当你手动执行时,你必须创建哈希值。

答案 1 :(得分:1)

redirect_to为其第一个参数提供字符串或哈希值。在第一种情况下,包含电子邮件和通知的哈希作为第二个参数发送,但在第二种情况下,哈希被任意划分为两个哈希,以满足方法的参数列表:

redirect_to admins_path, email: @user.email, notice: 'Success'

相当于

redirect_to admins_path, {email: @user.email, notice: 'Success'}

redirect_to action: 'show', email: @user.email, notice: 'Success'

相当于

redirect_to {action: 'show'}, {email: @user.email, notice: 'Success'}

当你想要的是什么

redirect_to {action: 'show', email: @user.email}, notice: 'Success'