2014-12-06 3 views
0

Там эта ссылка:отменить действие по умолчанию диспетчерское перенаправлять

= link_to "Close", close_ticket_path(:id => ticket.id), :onclick => $(this).closest('tr').remove()", :remote => true 

, какие маршруты в tickets_controller # близко:

def close 
    @ticket = Ticket.find(params[:id]).update_attribute(:status, "closed") 
    end 

По умолчанию, это действие будет перенаправлять views/tickets/close. Как отключить перенаправление по умолчанию? Я знаю, как указать настраиваемое перенаправление, но это не то, что мне нужно. Представление управляется сценарием, а db изменяется в действии, поэтому больше действий не требуется, и я не хочу, чтобы страница обновлялась. render не будет работать ни в коем случае, поскольку содержимое, о котором идет речь, загружается динамически, поэтому в основном делать точно ничего не нужно.

Я нашел это обходное решение, например. включая respond_to :js и создайте файл close.js.erb, или переместитесь выше :onclick в этот файл, но я хочу это делать идиоматично. По сути, ссылка работает сейчас по желанию с respond_to :js в действии (не включенном здесь), но консоль выдает недостающую ошибку шаблона, что не очень приятно. Я посмотрел в Rails Redirecting, в JS with Rails, Rendering guide и еще несколько, но безрезультатно.

ответ

0

На самом деле, после того, как reading this, я должен сделать справедливость и опубликовать официально рекомендуемый способ обработки этого дела. Действие следует читать:

def close 
    @ticket = Ticket.find(params[:id]).update_attribute(:status, "closed") 
    head :ok 
end 

Благодарим вас, @ auL5agoi, за то, что вы привели меня к этому ответу.

1

Попробуйте это:

def close 
    @ticket = Ticket.find(params[:id]).update_attribute(:status, "closed") 
    render nothing: true, :status => 200 
end 
+0

Ой, кажется, что я [пропустил место] (http://guides.rubyonrails.org/layouts_and_rendering.html#using-render). Спасибо :) – medik