如何解决这个标记系统路由问题

时间:2013-08-23 11:11:04

标签: ruby-on-rails

我在routes.rb中有一个标记资源:resources :tags以及标记链接代码段:get 'tags/:tag', to: 'users#index', as: :tag

标记链接代码段允许我单击标记链接并将其路由到用户索引页面,其中包含已使用该标记标记的所有用户的列表。该链接的格式为http://localhost:3000/tags/{tag_name}

不幸的是,这两个想法发生了冲突,因为当我尝试通过标记资源添加新标记时,生成的链接为http://localhost:3000/tags/new。这导致歧义,因为“新”可以是动作或标签名称。

我是铁杆初学者,关于如何解决这个问题的任何想法?我使用的大部分代码来自railscast http://railscasts.com/episodes/382-tagging?view=asciicast

2 个答案:

答案 0 :(得分:1)

试试这个 在您的UsersController中

def index
  @users = User.all
  @users = @users.where(tag: params[:tag]) if params[:tag]
end

你的网址

http://localhost:3000/users?tag=your_tag

您的观点

link_to 'Your tag', "#{users_path}?tag=your_tag"

答案 1 :(得分:0)

您可以尝试使用FriendlyId gem(https://github.com/norman/friendly_id)并使用show action重定向到用户控制器。