我一直在试图让我的第一个Rails代码工作一段时间,而我仍然无法让它工作。我的最新的问题是,我不断收到以下错误Rails未定义的方法
在MessageController#“NoMethodError创建”。
我看到,我试图通过零对一些变量,如图中的下一行
"undefined method `message' for #<Message mess: nil, user: nil>"
但是我的参数正确传递,因为我可以在错误屏幕的底部看到的。我的代码如下。任何帮助表示赞赏。
控制器
class MessageController < ApplicationController
def new
@message = Message.new
end
def create
@message = Message.new(user_params)
@message.mess=params[:mess]
@message.user=params[:user]
if @message.save
redirect_to "http://itworks.com"
else
redirect_to "http://myspace.com"
end
end
private
def user_params
params.require(:message).permit(:mess, :user)
end
end
查看
<%= form_for @message, url: {action: "create"}, html: {class: "nifty_form"} do |f| %>
<%= f.text_field :mess %><br />
<%= f.text_field :user %><br />
<%= f.submit "Create" %>
<% end %>
你不应该做'Message.new (user_params)'*和*'mess = params [:mess]; user = params [:user]'。使用一个或另一个。就目前来看,你做错了第二项任务。 'params [:mess]'和'params [:user]'都是零,所以你只需用'user_params'覆盖你拉入的值。你后面的值在'params [:message]'里面,例如'params [:message] [:user]'。至于你的错误,我们需要看看模型。 – meagar
你可以发布你的路线。 'routes.rb' –