2015-01-23 3 views
0

Мне нужно отправить статус из представления, но я хотел бы избавиться от кнопки отправки и отправить данные, когда я выберу свой статус в представлении. Я попытался с тегом select, который делает то, что я хочу, но не отправляет новый статус.рельсы представляют варианты выбора в форме

Для возобновления: f.select отправляет новые данные, но только с кнопкой отправки, от которой я хотел бы избавиться.

Я что-то забыл в своем коде?

Мой контроллер:

def update_status 
    @ticket = Ticket.find(params[:ticket_id]) 
    if @ticket.update_attributes(params[:ticket]) 
     redirect_to tickets_path 
    end 
    end 

Мое мнение:

-if current_user.admin? 
    div class="field" 
    =form_for @ticket, url: ticket_update_status_path(@ticket), method: :get do |f| 
    = f.select(:status, options_for_select(@status, @ticket.status) , :class => 'large m-wrap', data: {submit_on_change: true}) 
    .btn-blue 
     = f.submit 
-else 
    = @ticket.status 

ответ

1

Что вы делаете, просто добавив атрибут данных в ваш выбор, так что это будет выглядеть как этот

<select name="ticket[status]" data-submit_on_change="true"> 
    <option>...</option> 
    ... 
</select> 

явно добавлением атрибута данных не автомагически отправляет форму! Что вам нужно, это какой-то кусок JavaScript, таких как следующие (учитывая, что вы также можете использовать JQuery):

$(document).on('change', '[data-submit_on_change=true]', function(event) { 
    $(this).closest('form').submit(); 
}); 

функция on присоединяет правша события к событию change всех элементов, соответствующих селектор '[data-submit_on_change=true].

0

Если включить JQuery, вместо data: {submit_on_change: true} в ваших выбора опций, вы можете использовать onchange: "$(this).closest('form').submit()".

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