這工作:爲什麼在Rails中沒有注意到redirect_to中的操作?
redirect_to admins_path, email: @user.email, notice: 'Success'
但這並不設置通知:
redirect_to action: 'show', email: @user.email, notice: 'Success'
爲什麼設置操作打壓通知?
的Rails 4.1.6
這工作:爲什麼在Rails中沒有注意到redirect_to中的操作?
redirect_to admins_path, email: @user.email, notice: 'Success'
但這並不設置通知:
redirect_to action: 'show', email: @user.email, notice: 'Success'
爲什麼設置操作打壓通知?
的Rails 4.1.6
我不知道爲什麼,但如果你看一下例子here,你會看到你寫它(我認爲)
redirect_to ({action: 'show', email: @user.email}, notice: 'Success')
如果我不得不猜測,admins_path會創建所需的散列,而當您手動執行時,您必須創建散列。
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'
其實,'{action:'show'},email:@ user.email,注意:'Success''不起作用。電子郵件必須在第一個散列中。沒有花括號,我認爲Ruby除了第一個參數之外,都會強制第二個hash。 –
我看到了 - 所以如果該方法需要兩個參數,ruby會通過'猜測'來區分一個模糊的散列,第一個散列元素是第一個參數 - 很好知道! –
相應地修改了我的答案 –
是的,這工作。 –
出於好奇,我不得不問 - 有沒有一個原因,你不能只是用戶redirect_to @user? – MageeWorld
是的,這也適用。 –