Ruby on rails 路由问题。没有找到路线,但我知道这些路线存在

Ruby on rails 路由问题。没有找到路线,但我知道这些路线存在,ruby-on-rails,ruby,routing,routes,Ruby On Rails,Ruby,Routing,Routes,这里没有 试图找出如何将控制器中的方法显示到索引页中。以下是我到目前为止的情况 控制器- class SammichesController < ApplicationController def index @sammiches = Sammich.all end def create @sammich = Sammich.find_by_name(params[:sammich][:name]) end def random @sammichy

这里没有

试图找出如何将控制器中的方法显示到索引页中。以下是我到目前为止的情况

控制器-

 class SammichesController < ApplicationController
  def index
    @sammiches = Sammich.all
end
  def create
    @sammich = Sammich.find_by_name(params[:sammich][:name])
  end
  def random
    @sammichy = Sammich.rand(params[:sammich][:name])
  end
end
索引-

<h1>All my Sammiches</h1>
<%= form_for Sammich.new do |f| %>
<%= f.label :sammich %>
<%= f.text_field :name %>
<%= f.submit 'Find Sammich', :id => 'sammich_submit' %>
<% end %>
<%= link_to "Random sandwich", sammich_random_path %>
错误-

localhost:3000 - Routing Error

No route matches {:action=>"random", :controller=>"sammiches"}
Try running rake routes for more information on available routes.
任何帮助都将不胜感激


谢谢

如果您查看您的路线,它也有
:sammic\u id

sammich_random GET    /sammiches/:sammich_id/random(.:format) sammiches#random
这意味着您需要将一个id传递给URL助手
sammich\u random\u path
,而您没有

将您的路线更新到此位置:

resources :sammiches do
  collection do
    get "random"
  end
end

添加后,您的路线将只是
/sammiches/random

兴趣点。谢谢不过,我现在确实有一个新的错误。未定义的局部变量或方法“sammich\u random\u pathRun
rake routes
,我想现在的助手应该是
random\u sammiches\u path
。你比我聪明。我欠你一个人情。谢谢!我在链接上发现一个新错误。nil:NilClass的未定义方法“[]”。但这是一个完全不同的问题,我希望能对此进行剖析。如果您想从数据库中获取随机对象,可以执行
Sammich.order(“random()”)。首先在
random
操作中执行
。现在你没有传递任何参数,所以它不会工作。。。
sammich_random GET    /sammiches/:sammich_id/random(.:format) sammiches#random
resources :sammiches do
  collection do
    get "random"
  end
end