Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 具有id属性的自定义路由_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 具有id属性的自定义路由

Ruby on rails 具有id属性的自定义路由,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我不知道如何为我的表演安排路线。url上说,现在如果我选择了一个特定的指南来“展示”它 /准则/1 其中1是指南id 我想说 /头衔 (此处为所示指南的标题)。我不知道如何在我的路线上管理这个。目前我的路线已经改变了 get 'guideline/:id', to: 'guidelines#show', as: :seeguideline 但这只是我提到的准则/1,所以我意识到我做错了什么 我的视图通过 <%= link_to guideline.title, seeguideline_

我不知道如何为我的表演安排路线。url上说,现在如果我选择了一个特定的指南来“展示”它

/准则/1

其中1是指南id

我想说

/头衔

(此处为所示指南的标题)。我不知道如何在我的路线上管理这个。目前我的路线已经改变了

get 'guideline/:id', to: 'guidelines#show', as: :seeguideline
但这只是我提到的准则/1,所以我意识到我做错了什么

我的视图通过

<%= link_to guideline.title, seeguideline_path(id: guideline.id) %>
路线是

ActiveAdmin.routes(self)

  devise_for :admin_user, ActiveAdmin::Devise.config


  get "guidelines/topic"
  get "guidelines/topichospital"
  get "guidelines/topicspecialty"
  get "guidelines/favourite"


  devise_for :users

  devise_scope :user do
    get 'signup', to: 'devise/registrations#new', as: :register
    get 'login', to: 'devise/sessions#new', as: :login
    get 'logout', to: 'devise/sessions#destroy', as: :logout
    get 'edit', to: 'devise/registrations#edit', as: :edit
    put 'users' => 'devise/registrations#update', :as => 'user_registration'
    get 'about', to: 'about#about', as: :about
  end

  resources :guidelines
  get 'guidelines', to: 'guidelines#index', as: :guidelines
  get 'favourites', to: "favourites#show", as: :favourites
  get 'topics', to: 'guidelines#list', as: :topics
  get 'hospitals', to: 'guidelines#listhospital', as: :hospitals
  get 'specialties', to: 'guidelines#listspecialty', as: :specialties



  root :to => 'guidelines#index'
  get '/:id', to: 'profiles#show', as: :myprofile
  get '/:title', to: 'guidelines#show', as: :seeguideline

如果你想匹配像“/url”这样的url,你需要把它放在路由文件的底部,这样它的优先级就最低了(如果你有一个项目控制器,它就不匹配“/projects”)。理论上,这是通过

match '/:title' => 'guidelines#show', as: :seeguideline
然后在你的控制器里

def show
  @guideline = Guideline.where(title: params[:title]).first
end
然后在视图中,可以使用

seeguideline_path(@guideline.title)

但是,您还必须注意url中要使用的标题中的无效字符。

您可能需要查看此railscast

谢谢-这一切都是有意义的。但它并没有把我带到正确的地方(即去/标题,但不加载指南节目)-它说“你正在寻找的页面不存在”你能用你的路线和指南控制器更新你的问题吗?这行
get'/:id',到:“profiles#show”,as::myprofile
覆盖了您添加的路线,因此它不会转到指南控制器,而是转到profiles控制器。啊,好的,但这是为了其他目的-我能同时使用它们吗?您是对的,当我删除该行时,titles函数起作用。但是我该怎么做才能让他们都工作呢?
seeguideline_path(@guideline.title)