Rails Javascript Link_tos
В моем приложении рельсы у меня есть эти два link_to
которые оба явно что-то делают. Когда я
<% if Excont.where(:user_id=> current_user,:movie_id => @movie.id,:actionall => '2').includes(:user).all.count == 0%>
<tr style="border-top: none; ">
<td>
<%= link_to('Mark as action', {:controller => :excont, :action => 'thisisanaction', :id=> @movie.id, :actionall=>'2'}, :method => :post, :remote => true, :disable_with => 'Updating...') %>
</td>
</tr>
<% else %>
<tr style="border-top: none;">
<td>
<%= link_to('Unmark as action', {:controller => :excont, :action => 'removethisisanaction', :id=> @movie.id, :actionall=>'2'}, :method => :post, :remote => true, :disable_with => 'Updating...') %>
</td>
</tr>
<% end %>
Когда я нажимаю на первый link_to
(thisisanaction), он управляет Updating...
а затем возвращается к Mark as action
, если я перезагрузить это изменится на Unmark as action
,
Я спрашиваю, как идти от
Mark as action
-> Updating...
-> Unmark as action
а потом
Unmark as action
-> Updating...
-> Mark as action
без перезагрузки страницы. Как будет выглядеть мой код JS
1 ответ
Вот как я это исправил
Я поместил это в отдельный файл с именем _action.html.erb
<% if Excont.where(:user_id=> current_user,:movie_id => @movie.id,:actionall => '2').includes(:user).all.count == 0%>
<tr style="border-top: none; ">
<td>
<%= link_to('Mark as action', {:controller => :excont, :action => 'thisisanaction', :id=> @movie.id, :actionall=>'2'}, :method => :post, :remote => true, :disable_with => 'Updating...') %>
</td>
</tr>
<% else %>
<tr style="border-top: none;">
<td>
<%= link_to('Unmark as action', {:controller => :excont, :action => 'removethisisanaction', :id=> @movie.id, :actionall=>'2'}, :method => :post, :remote => true, :disable_with => 'Updating...') %>
</td>
</tr>
<% end %>
Затем я создал два .js.erb
файлы, названные в честь обоих действий (что очень важно, я нашел), так thisisanaction.js.erb
а также removethisisanaction.js.erb
,
Эти два файла должны быть помещены в папку соответствующего контроллера, в этом случае excont
Если не это не будет работать.
Обе эти папки должны содержать этот код
$(".excontaction").html("<%= escape_javascript(render('layouts/action'))%>");
В представлении, где вы хотите, чтобы кнопка показывала, вы добавляете это
<div class="excontaction">
<%= render 'layouts/action' %>
</div>
Див class
или же id
должен соответствовать тому, который вы положили в .js.erb
папки
Это должно работать!