基于HABTM类别的Rails视图

Jml*_*ick 2 ruby ruby-on-rails has-and-belongs-to-many

所以我有这个应用程序,我正在使用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
Run Code Online (Sandbox Code Playgroud)

并且(如果它有用)我的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>
Run Code Online (Sandbox Code Playgroud)

让我们说我们拥有的技能是:"警察,医生,音乐家",例如......如何在一个视图中创建链接,指向具有X技能的用户组,然后使用什么代码可以呈现一些视图显示仅包含属于X技能类别的用户的列表?

我打赌解决方案很简单......但是我错过了一些明显的东西,也许吧.你能指出我正确的方向吗?

谢谢!

小智 6

config/routes.rb中:

resources :skills
Run Code Online (Sandbox Code Playgroud)

生成SkillsController rails g controller skills并放在那里:

def index
  @skills = Skill.all
end

def show
  @skill = Skill.find(params[:id])
end
Run Code Online (Sandbox Code Playgroud)

然后你的意见:

#app/views/skills/index.html.erb
<ul>
  <% @skills.each do |skill| %>
    <li><%= link_to skill.name, skill_path(skill) %></li>
  <% end %>
</ul>
Run Code Online (Sandbox Code Playgroud)

#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>
Run Code Online (Sandbox Code Playgroud)