2016-10-28 1 views
0

в качестве последующей деятельности еще один вопрос здесь, я добавил следующий код в мой records_controller.rbRails "Параметр, переданный в #in? Должен отвечать на #include?"

if params[:order].in? %s[year artist title] 
    # adds ORDER to the scope 
    @records.merge!(Record.order("? DESC", params[:order])) 
end 

но тогда я получил сообщение об ошибке:

"The parameter passed to #in? must respond to #include?" 

Что это значит? Что мне нужно изменить?

ответ

2

От documentation:

in?(another_object) public

Returns true if this object is included in the argument.

Argument must be any object which responds to #include?

include? реагирует на массив объекта, который должен быть в формате %w[year artist title], но не к символ как вы написали %s[year artist title]

%w[year artist title] # => ["year", "artist", "title"] can be used for include? and in? 
%i[year artist title] # => [:year, :artist, :title] can be used for include? and in? 

%s[year artist title] # => :"year artist title" which is a symbol that can not be used for include? or in? 
+0

благодарственное вы. это позаботилось об этом! ;) – Boguz

0
%s[year artist title] 
=> :"year artist title" 

Это символ, предположим, вы хотите проверить, является ли параметр одной из строк. Вместо этого попробуйте использовать %w.

if params[:order].in? %w[year artist title] 

 Смежные вопросы

  • Нет связанных вопросов^_^