Ruby on rails 具有id属性的自定义路由
我不知道如何为我的表演安排路线。url上说,现在如果我选择了一个特定的指南来“展示”它 /准则/1 其中1是指南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_
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)