【发布时间】:2012-03-12 07:38:03
【问题描述】:
当我打开 http://localhost:3000/users 时,出现以下路由错误:
No route matches {:action=>"req", :controller=>"friendship", :id=>"admin@ascratech.com"}
如何解决?
在 users/index.html.erb 内部:
<ul>
<% @users.each do |user| %>
<li>
<%= user.full_name %>
(<%= link_to "request friendship",
:controller => :friendships,
:action => :req,
:id => user.email %>)
</li>
<% end %>
</ul>
内部FriendshipsController:
def req
@user = User.logged_in(session)
@friend = User.find_by_email(params[:id])
unless @friend.nil?
if Friendship.request(@user, @friend)
flash[:notice] = "Friendship with #{@friend.full_name} requested"
else
flash[:notice] = "Friendship with #{@friend.full_name} cannot be requested"
end
end
redirect_to :controller => :users, :action => :index
end
在 routes.rb 里面:
resources :friendships
【问题讨论】:
-
我正在尝试创建友谊模型。当我打开 localhost:3000/users 它应该显示所有注册用户并在他们面前请求友谊链接。点击请求友谊它应该转到友谊控制器请求动作.但我在点击localhost:3000/users 时用户的 index.html.erb 文件出现错误
-
“反馈”资源有什么意义?您正在使用非 RESTful 操作 (
friendships#req),您的 routes.rb 应该定义某种路由来处理您对friendhsips控制器的请求:get 'friendships/:id' => 'friendships#req'。 -
@jef "feedbacks" 资源写错了..它的资源 :friendships.
标签: ruby-on-rails rails-routing