2012-03-12 117 views
-3

当我打开http://localhost:3000/users我得到以下路由错误:错误路由

No route matches {:action=>"req", :controller=>"friendship", :id=>"[email protected]"} 

如何解决这个问题?

内部的用户/ 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 
+0

我想创建友谊model.when我打开http:// localhost:3000 /用户它应该显示所有注册用户和请求友谊链接在他们面前。点击请求友谊它应该去友谊控制器请求action.but在点击http:// localhost:3000/users – Nikita 2012-03-12 07:50:45

+0

时,我在用户的index.html.erb文件上出现错误“feedbacks”资源有什么意义?你正在使用非RESTful动作('friendships#req'),你的routes.rb应该定义一些路径来处理你对friendhsips控制器的请求:'get'friendships /:id'=>'friendships#req' '。 – Jef 2012-03-12 08:06:00

+0

@ jef“反馈”资源误写了它..资源:友谊。 – Nikita 2012-03-12 08:35:38

回答

0

也许你想要做的事:

resources :friendships do 
    member do 
    get :req 
    end 
end 
0

它想...... 这种设置方式,Rails会试图获取资源 /友情/ REQ/ID 在那里将期望ID告诉它,如果你想第1,第3,第22或REQ。

但你已经给它 :id =>“[email protected]” Rails正在寻找一个数字,并且你给它一个字符串。