Выберите помощник, не отображающий значение выбранного параметра в форме поиска - PullRequest
0 голосов
/ 08 декабря 2011

В своем приложении на Rails 3 я использую оба флажка и, в одном случае, помощника выбора для отправки формы поиска.Я применил некоторые jQuery к форме, поэтому, если я нажимаю флажок, форма отправляется.То же самое с помощником выбора.Если я установлю флажок, после отображения страницы флажок останется отмеченным как индикатор параметров, используемых для получения результата поиска.Проблема в том, что помощник по умолчанию выбирает «Выбрать» после отправки формы поиска.Он не поддерживает значение параметров, используемых для поиска.

Например, скажем, у меня есть три варианта: «Выбрать», «Искусство» и «Профессиональное».Если в моей форме по умолчанию выбрано «Выбрать», и я хочу выполнить поиск по «Arts», нажмите «Arts», чтобы отправить форму, обновить страницу и отобразить записи, соответствующие «Arts».Однако выбранный помощник не отображает «Искусство».По умолчанию возвращается «Выбрать» при отправке формы.

Я использую Ransack для поиска, поэтому вот действия в моем контроллере, где я выполняю поиск:

def index
  @q = User.search(params[:q])
  @users = @q.result(:distinct => true)
end

def search
  index
  render :index
end

Вот мой выбранный помощник:

<%= f.select :profile_subject_eq, options_for_select([['Select', ''], ['Arts'], ..., ['Vocational']], :selected => @q)  %>

(Как видите, я пытался изменить :selected безрезультатно.)

Наконец, вот jQuery, который я использую для отправки формы:

$(function(){
    $('select').live('change',function() {
        $(this).closest('form#index').submit();
    });
});

ОБНОВЛЕНИЕ: Вот вывод HTML помощника выбора:

<fieldset>
  <select id="q_profile_subject_eq" name="q[profile_subject_eq]">
    <option value="nil">Select</option>
    <option value="Arts">Arts</option>
    ...
    <option value="Vocational">Vocational</option>
  </select>
</fieldset>

Ответы [ 2 ]

0 голосов
/ 28 мая 2015

Если ваш набор только с помощью select, то вы можете сделать это следующим образом.

<%= f.select :profile_subject_eq, [["Arts"], ["Vocational"]], {:include_blank => 'Select', selected: params[:q] ? params[:q].try(:[], :profile_subject_eq) : ""} %>
0 голосов
/ 08 декабря 2011

Попробуйте

options_for_select([['Select', 'nil'], ['Arts'], ..., ['Vocational']], @q)

В соответствии с API doc вторым параметром является сам выбранный элемент, а не хеш, как :selected => ...

...