我刚刚开始使用设备。我根据说明设置了所有内容:1。在环境文件中定义默认URL选项,2。设置路由3.插入flash消息4.生成视图和用户模型。
注册/登录等工作正常,但是当我在我的控制器内部使用current_user帮助器时(submissions_controller.rb):
...
before_filter :authenticate_user!, :except => [:index, :show]
...
def new
@submit = current_user.Submit.new
respond_with(@submit)
end
def create
@submit = current_user.Submit.new(submit_params)
@submit.save
respond_with(@submit)
end
我收到以下错误:
NoMethodError in SubmitsController#new
undefined method `Submit' for #<User:0x007fea99a46f38>
Extracted source (around line #18):
def new
@submit = current_user.Submit.new
respond_with(@submit)
end
任何可能导致这种情况的想法?
答案 0 :(得分:1)
我不知道User
和Submit
之间的联系是什么,所以
如果用户有多个提交,则将current_user.Submit.new
更改为
current_user.submits.new
否则,如果用户有一个提交
current_user.build_submit
现在在new
和create
操作中使用上述更改
def new
@submit = current_user.submits.new
respond_with(@submit)
end
def create
@submit = current_user.submits.new(submit_params)
@submit.save
respond_with(@submit)
end
并且您的submit_params应该看起来像
def submit_params
params.require(:submit).permit(:title, :url)
end
require(:submit)
是正确的
希望它能够结束!
答案 1 :(得分:0)
你有这行代码
@submit = current_user.Submit.new(submit_params)
这里失败了,因为你在Submit
对象上调用user
方法,而你没有Submit
方法。通过查看您的代码,我发现您想要创建新的Submit
。
你应该写
@submit = Submit.new(submit_params) # instantiate new Submit object