2014-03-05 24 views
0

我是新來的紅寶石軌道4,我試圖使用強參數要求「項目」存在之前添加一個「角色」的項目。 「角色」本身需要與「項目」相關聯。如何在rails上使用強大的參數?

是我遇到的問題是,我當前的代碼,我收到錯誤 "undefined method許可證」爲‘1’:字符串「` - 我該如何解決這個???

的錯誤是在我的 「角色」 控制器確定 - >

private 
    def role_params 
    params.require(:project_id).permit(:role) 
    end 

    def project 
    @project ||= Project.find(params[:project_id]) 
    end` 

我在控制器中創建方法

def create 
    @role = project.roles.create(role_params) 
    new_was_successful = @role.save 
    end 

型號爲:

class Role < ActiveRecord::Base 
    belongs_to :project 
    validates :project_id , :presence => true 
end 

我在做什麼錯?

回答

1

更新

def role_params 
    params.require(:project_id).permit(:role) 
    end 

def role_params 
    params.require(:role).permit(:project_id) ## if more fields are present in role model then add them as arguments to permit 
    end 

,因爲你已經設置的參數強錯誤你得到錯誤。在params哈希表,你會得到這樣的事情:

例子:

"role"=>{"project_id"=>1,...} ### ... refers to other fields in role model, if present 

編輯

更新您的create動作如下

def create 
    @role = project.roles.create(role_params) 
    if @role.save 
     redirect_to @role, notice: 'Role was successfully created.' 
    else 
     render action: 'new' 
    end 
    end 
+0

謝謝!現在該頁面呈現,但是當提交時,如果在表單中提供了所有變量,則不成功。我想這是我的下一個任務! – rockit

+0

看到我更新的答案。如果未成功創建角色,請在日誌中驗證來自表單中所有值的params散列是否正確傳遞。我認爲其中一個驗證會在你的模型中失敗。你也可以檢查一下。 –

相關問題