我是rails 4上的ruby的新手,我试图在向项目添加“角色”之前使用强参数来要求存在“项目”。 “角色”本身需要与“项目”相关联。
我遇到的问题是,使用我当前的代码,我收到错误
"undefined method
permit'for“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
我做错了什么?
答案 0 :(得分: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