我在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
答案 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重定向到用户控制器。