所以我有一个应用程序,我使用一个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>