Rails:将数组传递给作用域

时间:2017-11-30 19:10:27

标签: ruby-on-rails ruby-on-rails-5

我试图弄清楚如何让用户输入多种技能"在以逗号分隔的文本区域中,然后将这些技能转换为一次一个地输入范围的数组。

同样在我的索引视图中,我列出了数组中的技能,这样当用户点击它时,它实际上会将该技能作为过滤器删除。

我遇到的问题是 1)不确定我是否正确地按照现在的方式进行数组

2)在索引视图中,当您单击一个要删除的技能时,将删除所有技能。

以我的形式

  # filters on the users skills
  if params[:sk].present? 

    @skills_list = params[:sk].split(",")
    @skills_list = @skills_list.to_a

    @skills_list.each do |skill|

    @users = @users.by_skills_array(skill)
    end
  end  

在我的控制器索引操作

  scope :by_skills_array, -> (skill) { joins(:skills).distinct.where( 'skills.name LIKE ?', "%#{skill}%" ) }

在我的用户模型中,我调用范围(技能模型是独立的,但属于用户模型,这就是我进行连接的原因)。

  <% if params[:sk].present? %>

    <% @skills_list.each do |skill|  %>

        <%= link_to  users_path( c: params[:c], ex: params[:ex], s: params[:s], lang: params[:lang], cert: params[:cert], 
                                 u: params[:u], relo: params[:relo], ed: params[:ed], maj: params[:maj], job: params[:job] ) , class: "btn btn-default" do %>
          <i class="fa fa-times"></i> <%= "#{skill}" %>
        <% end %>   


    <% end %>

  <% end %>   

在我的索引中我正在做

{{1}}

这里是输出

enter image description here

0 个答案:

没有答案