当我点击一个链接来渲染布局作为我的jQuery UI标签实现的一部分时,我得到ActionController::RoutingError in Profiles#show
。这是我的link_to
:
<%= link_to "Messages", :controller => 'profiles', :action => 'profile_messages', :remote => true %>
我的个人资料控制器:
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_messages
erb布局:
<div id="tabs-2">
<% for message in @user.messages %>
<div class="message-1">
</div>
<% end %>
</div><!-- end messages -->
routes.rb中:
resources :messages do
get "messages/profile" => :profile_messages
resources :responses
end
我想要发生的是:当您点击我的link_to
创建的链接时,profile_messages.html.erb
中的布局会显示并加载该特定布局中的消息。这是怎么回事?
更新:在Routes.rb
中添加新行为我提供了一条新路线:
message_messages_profile GET /messages/:message_id/messages/profile(.:format) {:action=>"profile_messages", :controller=>"messages"}
所以我在我的个人资料show.html.erb中试过这个:我把:
<li><%= link_to "Messages", message_messages_profile_path, :remote => true %></li>
这为我提供了RoutingError in Profiles#show
- No route matches {:action=>"profile_messages", :controller=>"messages"}
。即使我将以下内容添加到MessagesController
:
def profile_messages
@message = @user.messages.find(params[:user_id])
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @messages }
end
end
答案 0 :(得分:1)
get "messages/profile" => "messages#profile_messages", :as => profile_messages
resource :messages do
resource :responses
end
您没有该控制器操作的路由。 Rails默认不再映射“:controller /:action /:id”。您也可以根据需要启用该路线。您可以通过profile_messages_path
引用此内容。
我认为'show'实际上是消息的ID。此处列出了资源的默认路由:http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions。确保先列出你的路线!
答案 1 :(得分:1)
resource :messages do
collection do
get :profile_messages
end
end
在您的视图中
<li><%= link_to "Messages", "/messages/profile_messages", :remote => true %></li>
答案 2 :(得分:0)
感谢各位朋友的共同努力,我能够让这一切发挥作用。查看这些问题以获取更多代码: