2016-03-16 30 views
0

我有問題與寶石行爲-AS-加標籤,在Rails的5測試版3.agged_with(PARAMS [:技能])引發ArgumentError:參數錯誤數(考慮2,預計1)

項目。 RB

class Project < ActiveRecord::Base  
    acts_as_taggable 
    acts_as_taggable_on :skills 
end 

的routes.rb

get 'tags/:skill', to: 'projects#index', as: :skill 

projects_controller.rb

class ProjectsController < ApplicationController 
    def index 
    if params[:category] && Category.exists?(params[:category]) 
     @category = Category.find(params[:category]) 
     @projects = @category.projects.order("projects.created_at DESC")  
    elsif params[:skill] 
     @projects = Project.tagged_with(params[:skill]) 
    else 
     @projects = Project.all 
    end 

    @categories = Category.all 
    end 
end 

在線@projects = Project.tagged_with(params[:skill])我得到以下錯誤:

ArgumentError: wrong number of arguments (given 2, expected 1) from /usr/local/rvm/gems/ruby-2.3.0/gems/activerecord-5.0.0.beta3/lib/active_record/sanitization.rb:8:in `sanitize'

+0

可能是params [:skill]是否擁有一組技能標籤? – guitarman

+0

我使用tagged_with('ios')進行了檢查。同樣的錯誤 –

回答

5

貌似tagged_with呼籲quote_value內部,這是一個sanitizealias_method

sanitize只有一個參數,但tagged_with調用quote_value有兩個參數,這是造成問題。

請參閱acts_as_taggable,ActiveRecord::Sanitizationcommit引入此更改。

+0

我檢查tagged_with('ios')。同樣的錯誤。一個參數 –

+0

這不是你傳給tagged_with的東西,而是tagged_with在內部調用了quite_value。基本上,您正在使用的acts_as_taggable版本與rails-5不兼容。 – Dharam

+0

如果這個寶石與導軌5不兼容,如何工作? –

0

他們解決了這個問題。從您的Gemfile中的master分支下載:

gem 'acts-as-taggable-on', :github => 'mbleigh/acts-as-taggable-on', :branch => 'master' 
相關問題