Ruby on rails 3 未找到Rails 3操作控制器记录
我正在将jQuery UI选项卡与Ajax一起使用,但出现了一个错误:Ruby on rails 3 未找到Rails 3操作控制器记录,ruby-on-rails-3,controller,Ruby On Rails 3,Controller,我正在将jQuery UI选项卡与Ajax一起使用,但出现了一个错误: Failed to load resource: the server responded with a status of 404 (Not Found) 资源是 如果我在浏览器中转到,我将获得动作控制器:捕获异常: ActiveRecord::RecordNotFound in MessagesController#show Couldn't find Message with ID=profile_messages
Failed to load resource: the server responded with a status of 404 (Not Found)
资源是
如果我在浏览器中转到,我将获得动作控制器:捕获异常:
ActiveRecord::RecordNotFound in MessagesController#show
Couldn't find Message with ID=profile_messages
Rails.root: /Users/me/Desktop/myapp
app/controllers/messages_controller.rb:18:in `show'
Parameters:
{"id"=>"profile_messages"}
在我的消息控制器中显示:
def show
@message = Message.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @message }
format.js {render :layout => false }
end
end
resources :users
resources :profiles
resources :session
resources :sessions
resources :messages do
resources :responses
end
resource :messages do
collection do
get :profile_messages
end
end
messages GET /messages(.:format) {:action=>"index", :controller=>"messages"}
POST /messages(.:format) {:action=>"create", :controller=>"messages"}
new_message GET /messages/new(.:format) {:action=>"new", :controller=>"messages"}
edit_message GET /messages/:id/edit(.:format) {:action=>"edit", :controller=>"messages"}
message GET /messages/:id(.:format) {:action=>"show", :controller=>"messages"}
PUT /messages/:id(.:format) {:action=>"update", :controller=>"messages"}
DELETE /messages/:id(.:format) {:action=>"destroy", :controller=>"messages"}
profile_messages_messages GET /messages/profile_messages(.:format) {:action=>"profile_messages", :controller=>"messages"}
POST /messages(.:format) {:action=>"create", :controller=>"messages"}
new_messages GET /messages/new(.:format) {:action=>"new", :controller=>"messages"}
edit_messages GET /messages/edit(.:format) {:action=>"edit", :controller=>"messages"}
GET /messages(.:format) {:action=>"show", :controller=>"messages"}
PUT /messages(.:format) {:action=>"update", :controller=>"messages"}
DELETE /messages(.:format) {:action=>"destroy", :controller=>"messages"}
def profile_messages
@messages = User.find(@profile.user_id).messages
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @messages }
end
end
messagescoontroller#show是针对单个消息的,但是我如何才能使它适用于我要做的事情呢?我是Rails和编程新手,如果这是一个显而易见的答案,我感到非常抱歉
Routes.rb:
def show
@message = Message.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @message }
format.js {render :layout => false }
end
end
resources :users
resources :profiles
resources :session
resources :sessions
resources :messages do
resources :responses
end
resource :messages do
collection do
get :profile_messages
end
end
messages GET /messages(.:format) {:action=>"index", :controller=>"messages"}
POST /messages(.:format) {:action=>"create", :controller=>"messages"}
new_message GET /messages/new(.:format) {:action=>"new", :controller=>"messages"}
edit_message GET /messages/:id/edit(.:format) {:action=>"edit", :controller=>"messages"}
message GET /messages/:id(.:format) {:action=>"show", :controller=>"messages"}
PUT /messages/:id(.:format) {:action=>"update", :controller=>"messages"}
DELETE /messages/:id(.:format) {:action=>"destroy", :controller=>"messages"}
profile_messages_messages GET /messages/profile_messages(.:format) {:action=>"profile_messages", :controller=>"messages"}
POST /messages(.:format) {:action=>"create", :controller=>"messages"}
new_messages GET /messages/new(.:format) {:action=>"new", :controller=>"messages"}
edit_messages GET /messages/edit(.:format) {:action=>"edit", :controller=>"messages"}
GET /messages(.:format) {:action=>"show", :controller=>"messages"}
PUT /messages(.:format) {:action=>"update", :controller=>"messages"}
DELETE /messages(.:format) {:action=>"destroy", :controller=>"messages"}
def profile_messages
@messages = User.find(@profile.user_id).messages
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @messages }
end
end
rake路由:
def show
@message = Message.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @message }
format.js {render :layout => false }
end
end
resources :users
resources :profiles
resources :session
resources :sessions
resources :messages do
resources :responses
end
resource :messages do
collection do
get :profile_messages
end
end
messages GET /messages(.:format) {:action=>"index", :controller=>"messages"}
POST /messages(.:format) {:action=>"create", :controller=>"messages"}
new_message GET /messages/new(.:format) {:action=>"new", :controller=>"messages"}
edit_message GET /messages/:id/edit(.:format) {:action=>"edit", :controller=>"messages"}
message GET /messages/:id(.:format) {:action=>"show", :controller=>"messages"}
PUT /messages/:id(.:format) {:action=>"update", :controller=>"messages"}
DELETE /messages/:id(.:format) {:action=>"destroy", :controller=>"messages"}
profile_messages_messages GET /messages/profile_messages(.:format) {:action=>"profile_messages", :controller=>"messages"}
POST /messages(.:format) {:action=>"create", :controller=>"messages"}
new_messages GET /messages/new(.:format) {:action=>"new", :controller=>"messages"}
edit_messages GET /messages/edit(.:format) {:action=>"edit", :controller=>"messages"}
GET /messages(.:format) {:action=>"show", :controller=>"messages"}
PUT /messages(.:format) {:action=>"update", :controller=>"messages"}
DELETE /messages(.:format) {:action=>"destroy", :controller=>"messages"}
def profile_messages
@messages = User.find(@profile.user_id).messages
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @messages }
end
end
profile\u messages控件中的messages方法:
def show
@message = Message.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @message }
format.js {render :layout => false }
end
end
resources :users
resources :profiles
resources :session
resources :sessions
resources :messages do
resources :responses
end
resource :messages do
collection do
get :profile_messages
end
end
messages GET /messages(.:format) {:action=>"index", :controller=>"messages"}
POST /messages(.:format) {:action=>"create", :controller=>"messages"}
new_message GET /messages/new(.:format) {:action=>"new", :controller=>"messages"}
edit_message GET /messages/:id/edit(.:format) {:action=>"edit", :controller=>"messages"}
message GET /messages/:id(.:format) {:action=>"show", :controller=>"messages"}
PUT /messages/:id(.:format) {:action=>"update", :controller=>"messages"}
DELETE /messages/:id(.:format) {:action=>"destroy", :controller=>"messages"}
profile_messages_messages GET /messages/profile_messages(.:format) {:action=>"profile_messages", :controller=>"messages"}
POST /messages(.:format) {:action=>"create", :controller=>"messages"}
new_messages GET /messages/new(.:format) {:action=>"new", :controller=>"messages"}
edit_messages GET /messages/edit(.:format) {:action=>"edit", :controller=>"messages"}
GET /messages(.:format) {:action=>"show", :controller=>"messages"}
PUT /messages(.:format) {:action=>"update", :controller=>"messages"}
DELETE /messages(.:format) {:action=>"destroy", :controller=>"messages"}
def profile_messages
@messages = User.find(@profile.user_id).messages
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @messages }
end
end
您正在尝试访问id=>profile\u消息的消息
您可能需要做的是:
例如:
在routes.rb中,您可能需要添加以下内容:
resources:messages
成员do
获取:配置文件\u消息
结束
结束
=======更新========
基于此,
profile_messages_messages GET /messages/profile_messages(.:format) {:action=>"profile_messages", :controller=>"messages"}
您能否向我们显示控制器消息中的方法配置文件消息
=======更新========
你应该改变你的路线
资源:用户
资源:概况
资源:会议
资源:会议
资源:消息可以吗
资源:答复
结束
资源:消息可以吗
收藏办
获取:配置文件\u消息
结束
结束
到
资源:用户
资源:概况
资源:会议
资源:会议
资源:消息可以吗
资源:答复
获取:profile_消息,:on=>:集合
结束
你也可以加上
match”/messages/profile_messages=>“messages#profile_messages”
您能告诉我们您的routes.rb吗?为什么您只有一个问题\u控制器而没有消息\u控制器?你能添加实际的文件而不是rake路由的输出吗?你比我快。我添加了文件和rake路由的消息
端。在您的消息中,控制器是@profile
是为行@messages=User.find(@profile.User\u id)定义的。消息
否@profile在MessagesController中的任何位置都没有定义。我应该在show
方法或profile\u messages
方法中定义它吗?首先尝试更改路由,但您需要定义它,因为它是在profile\u messages方法中调用的,因此没有路由匹配,我无法找到ID=profile\u问题的问题。通过匹配(并将“messages#profile_messages”更改为“messages#profile_messages”),我在messages\u controller.rb
中为nil:NilClass`获得未定义的方法user_id'。所以我需要在profile\u messages
中的messages\u controller.rb
中定义它。太好了,现在你需要在profile\u messages中定义你的@profile
,这样它就可以访问用户id了。