0

关于 SO 的问题具有以下 url 结构:

http://stackoverflow.com/questions/18474799/changing-the-input-value-in-html5-datalist

如果我们假设数字部分是ID,那么前两个部分(在域扩展之后)通过简单地使用routes.rb中的以下内容获得

resources :questions

问题已经通过它的 ID 来识别,那么我们如何以最简单的方式添加(可选的)装饰条呢?我们是否需要使用新的链接助手(并包括其他参数)或者可以在其他地方解析 3 部分 url?

更新:

为了将这个问题更多地集中在路由处理上,我们假设已经有一个 slug 作为属性保存在对象上(在创建时),例如@question.slug

routes.rb如果控制器中的或/和中的规则可以启用和处理可选的 slug,而不必在所有视图中编写长链接帮助程序,那将是一个真正的优势。

4

3 回答 3

1
resources :questions do
  member: title
end

对于蛞蝓使用friendly_id,是的,别忘了看看Rails Routing

于 2013-08-28T15:43:41.550 回答
0

如果您只想以这种方式处理 GET 请求,那么很容易做到:

get '/questions/:id/:title' => 'questions#show',  as: :question_with_title
resources :questions

通过这种方式,您可以处理带有或不带有标题的传入 URL(就像 StackOverflow 可以 - 试试看!)。您可以使用以下内容动态创建 url:

question_with_title_path(@question.id, @question.title.to_s.downcase.gsub(/ /, '-')
# probably will want to use a method for processing titles into url-friendly format

更多信息请访问http://guides.rubyonrails.org/routing.html#static-segments

于 2013-08-28T15:32:22.523 回答
0

您也许可以使用该to_param方法创建一个“友好的 id”。

像这样的东西:

class Question < ActiveRecord::Base
  def to_param
    [id, name.parameterize].join("/")
  end
end

此要点中的更多信息

于 2013-08-28T15:36:22.977 回答