我对下面的代码做了什么错误处于绝对的损失。我试图在我的应用程序中实现一个消息传递系统,但希望它处理不同类型的消息。在这种情况下,我想创建':message_type => 1'的“请求”消息。Ruby on Rails:在控制器中使用方法名称'request'失败
不像我通常使用的那样使用表单,我想在链接被点击的时候创建这个实例。这里是我有它设置在展会ERB文件的“用户”:
<%=link_to "Send friend request", :action=>"request", :controller => "messages", :id => @user.id %>
,并在控制器:
def request
@message = Message.new(:sender_id => current_user.id,:user_id => params[:id],:message_type => 1)
if @message.save
flash[:notice] = 'Message was successfully created.'
redirect_to message_path(@message)
else
redirect_to message_path(@message)
end
end
这将导致以下错误消息:未定义的方法`重写“对零:NilClass与跟踪看起来像
c:/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/whiny_nil.rb:52:in `method_missing'
c:/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:634:in `url_for'
(eval):16:in `message_path'
app/controllers/messages_controller.rb:11:in `request'
我用map.resources:在routes.rb中文件的消息,并做了相应:Has_或许有帮助许多和:用户和消息模型中的belongs_to关联。
编辑:另外需要注意的是,保存是成功的,因为一旦根地址被手动输入到地址栏中,就会显示“闪存”通知,表示保存已完成。使用开发控制台确实存在,所以有一些与重定向混乱的东西。
哇。谢谢。这是一个非常令人沮丧的考验。我希望这些错误信息更具描述性。这很不吉利 – JackCA 2010-05-18 14:44:55
这个“其他”块仍然是一个等待发生的错误,正如我在答案中指出的那样。我很高兴你能解决你的直接问题。 – jdl 2010-05-18 16:15:25
是的,我实际上只是将两个重定向都改为“redirect_to:back”,但谢谢! – JackCA 2010-05-18 17:28:15