2016-07-07 48 views

回答

2

我不知道爲什麼,但如果你看一下例子here,你會看到你寫它(我認爲)

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

如果我不得不猜測,admins_path會創建所需的散列,而當您手動執行時,您必須創建散列。

+0

是的,這工作。 –

+0

出於好奇,我不得不問 - 有沒有一個原因,你不能只是用戶redirect_to @user? – MageeWorld

+0

是的,這也適用。 –

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' 
+1

其實,'{action:'show'},email:@ user.email,注意:'Success''不起作用。電子郵件必須在第一個散列中。沒有花括號,我認爲Ruby除了第一個參數之外,都會強制第二個hash。 –

+0

我看到了 - 所以如果該方法需要兩個參數,ruby會通過'猜測'來區分一個模糊的散列,第一個散列元素是第一個參數 - 很好知道! –

+0

相應地修改了我的答案 –

相關問題