嗨,谢谢你抽出时间回答我的问题!
我的api / ProjectController中有以下代码:
class Api::ProjectsController < ApplicationController
respond_to :json
def index
respond_with Project.all
end
def show
respond_with Project.find(params[:id])
end
def create
@project = Project.new(project_params)
if @project.save
redirect_to @project
else
render 'new'
end
end
end
我一直收到以下错误:
undefined local variable or method `project_params' for #<Api::ProjectsController:0x00003d6d80b448>
当我将create方法中的第二行更改为:
时@project = Project.new(params[:project])
我收到以下错误:
ActiveModel::ForbiddenAttributesError
我正在使用ember并从前端发送Project对象的JSON表示。在这两个实例中,这是传播到控制器的json:
{"project"=>{"name"=>"asdfsdfsdf"}}
有人可以找出错误的地方吗...我觉得我在这方面花的时间比我真的要多......:/
非常感谢你,新年快乐!!
答案 0 :(得分:2)
您必须定义您尝试使用的project_params
方法:
def project_params
params.require(:project).permit(:name)
end
您可以在Rails 4 Strong parameters上找到更多信息和示例。
答案 1 :(得分:1)
看起来您没有在Api :: ProjectsController类中定义project_params
方法。您需要向名为project_params
的Api :: ProjectsController添加一个方法,如:
def project_params
params.require(:project).permit(:attribute)
end
只需将:attribute符号替换为表单中相应字段的实际属性即可。因此,如果您的项目有'name'和'start_date'字段,那么您的需求将显示为params.require(:project).permit(:name, :start_date)
。