【问题标题】:error in routing路由错误
【发布时间】: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' =&gt; 'friendships#req'
  • @jef "feedbacks" 资源写错了..它的资源 :friendships.

标签: ruby-on-rails rails-routing


【解决方案1】:

它认为... 这种设置方式,Rails 将尝试获取资源 /友谊/req/id 如果您想要第 1 个、第 3 个或第 22 个请求,它将期望 id 告诉它。

但你已经给了它 :id=>"admin@ascratech.com" Rails 正在寻找一个数字,而您已经给它一个字符串。

【讨论】:

    【解决方案2】:

    也许你想做:

    resources :friendships do
      member do
        get :req
      end
    end
    

    【讨论】:

      猜你喜欢
      • 2017-09-02
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 2018-05-24
      • 2023-03-25
      • 2010-12-26
      • 2015-09-25
      相关资源
      最近更新 更多