2015-07-10 5 views
0

У меня есть два вида, которые фиксируют аналогичный контроллер, создавая действие, позволяя пользователю «отслеживать» продукт. При нажатии кнопки «Трек» каждое представление отправляет запрос AJAX через атрибут remote: true, а ответ javascript должен повторно отобразить соответствующий фрагмент, который вызвал его. Как я могу указать свой скрипт create.js.haml, просмотр которого называется действием, а затем отвечать соответствующим образом?Указывать контроллеру Rails, просмотр которого называется действием

Код:

Частичное # 1

- if current_user.present? && current_user.tracked_products.include?(@media) 
    %a.btn.btn-responsive.btn-thin.btn-color.red-bg{ href: main_app.price_tracker_path(current_user.price_trackers.where(product_id: @media.id ).first, _method: :delete), style: 'font-size: 1.2em', data: { method: :delete, remote: true } } 
     -# %i.fa.fa-eye-slash 
     Stop Tracking 
- elsif current_user.present? 
    %a.btn.btn-responsive.btn-thin.btn-color.brand-background-color-lavender{ href: main_app.modal_new_price_trackers_path(media_id: @media.slug), style: 'font-size: 1.2em', data: { toggle: :modal, target: '#new_price_tracker' } } 
     -# %i.fa.fa-eye 
     Track It 
- else 
    %a.btn.btn-responsive.btn-thin.btn-color.brand-background-color-lavender{ href: '#', style: 'font-size: 1.2em', data: { toggle: :modal, target: '#login_modal' } } 
     -# %i.fa.fa-eye 
     Track It 

Частичное # 2

- if (tracker = current_user.price_trackers.active.where(product: product).first).present? 
    %a.btn-responsive.brand-color-white{ href: main_app.price_tracker_path(tracker, _method: :delete), data: { method: :delete, remote: true} } 
     %i.fa.fa-check-circle 
     Track 
- else 
    %a.btn-responsive.brand-color-white{ href: main_app.modal_new_price_trackers_path(media_id: product.slug), data: { toggle: :modal, target: '#new_price_tracker' } } 
     Track 

create.js.haml:

if (//some indicator here) { 
$('#track-product-'+#{@product.id}).html("#{j render(partial: 'products/track_item_from_card', locals: {product: @product})}"); 
else { 
$('#track-item-button').html("#{j render(partial: 'products/track_item')}"); } 
} 

$('#new_price_tracker').attr("aria-hidden", "true"); 
$('#new_price_tracker').attr("style", "display: none;"); 
+0

Кажется, что мне нужно что-то вроде hidden_field_tag, но для ссылка вместо формы –

ответ

1

В одном окне вы должны поставить как это.

== button_tag 'Save', :value => 'view1', :name => 'commit', :type => 'submit' 

И во второй взгляд

== button_tag 'Save', :value => 'view2', :name => 'commit', :type => 'submit' 

Затем в создании проверки действий для params[:commit], чтобы определить, если это view1 или вид 2.

+0

Я не уверен, как это будет работать с моим текущим кодом ссылки. Вы имеете в виду что-то вроде этого? '- else \t% a.btn-responsive.brand-color-white {href: main_app.modal_new_price_trackers_path (media_id: product.slug),: value => 'view1', data: {toggle:: modal, target : '#new_price_tracker'}} \t \t Трек' –

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