2013-07-18 100 views
1

我正在學習使用teamtreehouse教程的rails。本教程使用3.1,但我試圖學習4.0,因此我遇到了困難,可能是因爲rails 4強制使用強參數。我有兩個模型,一個用戶模型和一個狀態模型。我用devise爲用戶創建了認證,並且包含了新的參數。它們是:first_name,:last_name和:profile_name。我已經創建了用戶和狀態之間的關係。使用Devise和Rails 4訪問自定義參數

當前用戶使用新參數註冊正在工作;我可以使用例如current_user.last_name來訪問它們。但是,我想要顯示在狀態索引視圖中創建帖子的用戶的profile_name(每個用戶還沒有單獨的頁面)。我想這樣做使用

status.user.profile_name 

但它只是顯示空白。如果我做 status.user.email(這是一個預先配置的設計參數),它顯示沒有問題。我猜我必須在某些控制器中將這些參數列入白名單,但我不知道在哪裏或如何。 謝謝

回答

3

歡迎在船上。 :) Rails是驚人的,你會真正喜歡這個旅程。 :)

我想,在這裏你會找到答案:https://github.com/plataformatec/devise/tree/rails4#strong-parameters

基於上面的鏈接,我想你應該在你的ApplicationController插入這樣的事情:

class ApplicationController < ActionController::Base 
    before_filter :configure_permitted_parameters, if: :devise_controller? 

    protected 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:user) { |u| u.permit(:profile_name) } 
    end 
end 

而且我已經建議以前的問題... Strong parameters with Rails and Devise

...你可以創建自己的控制器,可以擴展設計自己的控制器。沒有爲一個要點是:更 https://gist.github.com/bluemont/e304e65e7e15d77d3cb9

一點點細節設計DOC:https://github.com/plataformatec/devise/tree/rails4#configuring-controllers

希望它可以幫助,讓我知道發生了什麼。

+0

它在我切換時工作:用戶:sign_up。從我的閱讀:如果我重寫了控制器中的user_params方法,用戶將工作。那就是我想避免的......(我應該學會如何,因爲如果沒有這樣做,設計的真正定製就不可能實現)。 – kempchee

相關問題