0

我对 Rails 中的浏览器字符串有疑问。

例如,我有带有路线的 rails 应用程序:

resources :posts

这个资源创建:

post/:id

post/21
post/167
post/356

但我创建了一个简单的博客,我想将 ':id' 重命名为

post/some-name
post/another-name
post/another-different-name

在帖子中我有标题,文本字段,但我不知道怎么做

我知道这可以通过操纵 :id 来实现

你能发布一些关于这个问题的详细答案的链接,或者一些简单的例子

4

3 回答 3

1

你当然可以在 URL 中放任何你想要的东西,实际上有关于它的 railcast: http ://railscasts.com/episodes/63-model-name-in-url

最好(阅读:更容易)也将 model.id 保留在 URL 中,或者这意味着帖子名称必须是唯一的,否则您可以放置​​任何您想要的内容:

/post/2465-my-pretty-post-name

此外,还有 gem friendly_id和相关的 railcast: http: //railscasts.com/episodes/314-pretty-urls-with-friendlyid

希望有帮助。

于 2012-09-18T19:29:42.847 回答
0

为什么要更改 /post/:id ?您可以实现类似 /post/:id/comments

你可以在你的 routes.rb 中使用这样的嵌套资源来做到这一点

资源 :posts 做资源 :comments end

在此处查看更多详细信息 http://guides.rubyonrails.org/getting_started.html

于 2012-09-18T19:13:41.683 回答
0

如果您将 to_param 方法添加到模型中,那么您可以在您的 URL 系统中使用它。

class SomeModel < ...

  def to_param
    self.title
  end

end

然后在您的控制器中,设置一个过滤器以使用 title 属性而不是用于 find 方法的 ID 属性来获取模型。

before_filter :setup_record

def setup_record
  @record ||= Record.find_by_title(params[:id])
end

您必须确保您的标题保持唯一,如果您更改它,您将不得不丢弃所有其他以前的 URL 或保留旧名称的历史记录。

于 2012-09-18T19:33:50.460 回答