rails newbie - 如何将查询字符串更改为路由

时间:2012-01-19 21:00:07

标签: ruby-on-rails ruby rails-routing

通过实施博客,我学习的方式最多。我刚刚添加了标记,并且在显示文章时,我的文章视图显示了可显示可点击标记的位置。问题是这些链接就是这样出来的;

http://localhost:3000/articles?tagged_with=development

我宁愿没有查询字符串,而是有类似的东西;

http://localhost:3000/articles/tagged_with/development

我在rails网站的“路径里面外出”指南中找不到任何相关内容(那里有很多有用的东西,不是这个!)

此处填写完整代码: https://github.com/mikeyhogarth/mikeyblog

Pertinant位是;

_article.html.erb中的链接:

<%= link_to tag, articles_path(:tagged_with => tag) %>

文章索引控制器:

def index

 if(params[:tagged_with])
   @tag = params[:tagged_with]
   @articles = Article.tagged_with @tag
 else
   @articles = Article.all
 end

 respond_to do |format|
   format.html # index.html.erb
   format.json { render json: @articles }
 end
end

执行此操作的最佳实践方式是什么?我是否需要实现“tagged_with”操作并创建一个帮助器,或者是否有一些可以快速排序的轨道魔法?

编辑:最终找到了答案

2 个答案:

答案 0 :(得分:1)

我最终找到了答案:我需要一个“命名路线”。如果其他人有这个问题,我只需将它放在我的routes.rb文件中;

match "/articles/tagged_with/:tag" => "articles#index", :as => "articles_tagged_with"

然后简单地用我的“link_to”重新填充;

    <%= link_to tag, articles_tagged_with_path(:tag => tag) %>, 

答案 1 :(得分:1)

尝试在路线上添加类似的内容(未经测试):

match '/articles/tagged/:tagged_with' => 'articles#index', :as => :tagged_articles

然后:

link_to(tag, tagged_articles_path(:tagged_with=>"foobar"))