所以我有一个应用程序,我使用一个habtm关联来确定“用户技能”;当一个新用户被创建(通过新的用户视图)时,用户可以通过一组habtm复选框来声明他/她的技能,这些复选框可在该视图上与表单一起使用……
我想做的是有一个基于不同技能的链接的视图,例如:“警察”、“医生”、“音乐家”等。这些链接应该指向其他视图,在这些视图中,我可以只向访问者显示属于他们单击的特定类别的用户列表。
我的用户/技能模型(关联部分)如下所示:

#User Model

class User < ActiveRecord::Base
 has_and_belongs_to_many :skills

#Skill Model

class Skill < ActiveRecord::Base
    has_and_belongs_to_many :users

而且(如果有帮助的话)我的habtm复选框如下所示:
<p> What Skills do you have?

<% for skill in Skill.find(:all) %>
<div>
  <%= check_box_tag "user[skill_ids][]", skill.id, @user.skills.include?(skill) %>
  <%= skill.name %>
</div>
<% end %>
</p>

比如说我们的技能是:“警察,医生,音乐家”…如何在视图中创建指向具有x技能的用户组的链接,然后使用什么代码可以呈现某些视图,这些视图仅显示属于x技能类别的用户的列表?
我打赌解决方法很简单…但我可能漏掉了一些显而易见的东西。你能告诉我正确的方向吗?
谢谢!

最佳答案

在config/routes.rb中:

resources :skills

rails g controller skills生成一个SkillsControl并放在那里:
def index
  @skills = Skill.all
end

def show
  @skill = Skill.find(params[:id])
end

那么你的观点:
#app/views/skills/index.html.erb
<ul>
  <% @skills.each do |skill| %>
    <li><%= link_to skill.name, skill_path(skill) %></li>
  <% end %>
</ul>


#app/views/skills/show.html.erb
<h1>Users who have the <%= @skill.name %> skill</h1>
<ul>
  <% @skill.users.each do |user| %>
    <li><%= user.full_name %></li>
  <% end %>
</ul>

10-08 19:25