Я использую Ransack с Rails 3.Gem Ransack не возвращает результаты, когда искали с полным именем
Мои взгляды:
<%= search_form_for @search do |f| %>
<%= f.text_field :first_name_or_last_name_or_company_cont, :style => 'width:150px;padding-top:6px;' %><p class="button">
<%= f.submit "Search by name or company" %></p>
<% end %>
Моя схема:
create_table "users", :force => true do |t|
t.string "first_name",
t.string "last_name"
на Модель пользователя У меня есть:
def full_name
"#{self.first_name} #{self.last_name}"
end
Wor король на консоли.
Если у меня есть пользователь с first_name = "Foo"
, last_name = "Bar"
, при поиске с одним из них, я получаю результаты как ожидалось.
Когда я искал full_name = "Foo Bar"
, я не получаю результатов.
Я попытался изменить свою text_field для рыскать в:
<%= f.text_field :first_name_or_last_name_or_company_or_full_name_cont
я first_name_or_last_name_or_company_or_full_name_cont is undefined
есть быстрый способ решить эту проблему без добавления другого столбца для FULL_NAME на столе пользователей?
также:
7: def index
8: search_params = params[:q]
=> 9: binding.pry
[1] pry(#<UsersController>)> search_params
=> {"first_name_or_last_name_or_company_cont"=>"Foo Bar"}
Я думаю, я могу разделить значение ключа здесь искать только первое имя.
удивительный! спасибо – neo
Спасибо, что назовите меня в правильном направлении. Ваш пример не работал с mysql. Я последовал вашей ссылке и попробовал пример, который действительно сработал. То есть: ransacker: full_name do | parent | Arel :: Nodes :: NamedFunction.new ('concat_ws', ['', parent.table [: first_name], parent.table [: last_name]]) end – curt
Вы используете mysql? потому что я попробовал то же самое и не повезло. –