Оглядываясь (много) Я прорыл множество сообщений по этому вопросу, но я действительно смущен, так как эта проблема, похоже, в основном была рассмотрена некоторое время назад (когда произошли изменения) и редко совпадает с тем, как сегодня выглядят вещи.Rails/ненавязчивый Javascript - link_to_remote: update
Итак, я пытаюсь обновить приложение Rails 2.1 до 3.2 - и столкнулся с устаревшей функцией link_to_remote. Я понимаю, что он заменен link_to: remote => true, но это действительно не отвечает на мою проблему.
приложение, я работаю над использует много магии прототипа сделать это рендеринг в странице, как следующее:
В /acl/main.html.erb:
<table width=95%>
<tr><td align=center valign=top width=30%> <!-- Employees List -->
<%= render(:partial => "employee_list") %>
</td><td align=center valign=top> <!-- Roles & Privileges List -->
<div id='roles' style="border: 1px solid black; background-color: #ddd;">
<% if @employee.blank? %>
<h4>Select employee to see access details.</h4>
<% elsif @show_uploads %>
<%= render :partial => 'employee_uploads' %>
<% else %>
<%= render :partial => 'employee_edit' %>
<% end %>
</div>
</td></tr>
А потом, в аКЛ/_employee_list.html.erb:
<span class="simple">
<table class="production_list">
<tr>
<th colspan=10>
Employees  
<% if @show_all %>
<%= link_to 'Show only active', {:action => "main"} %>
<% else %>
<%= link_to 'Show inactive', {:action => "main", :show_all => 1} %>
<% end %>
 
<%= link_to_remote 'Create',
{ :url => {:action => "create_employee"}, :update => 'roles' } %>
</th>
</tr>
<tr class="default_header_row">
<th width=50 class="default_header_cell small_08">Initials</th>
<th width=190 class="default_header_cell small_08">Name</th>
<th width=90 class="default_header_cell small_08">Access</th>
</tr>
<%= render(:partial => "employee_item", :collection => @employees) %>
</table>
</span>
ACL/_employee_create.html.erb только длинный стол из входов, которые, очевидно, получить вставлено в #post DIV на этой странице.
Итак, мой вопрос - Как мне это сделать с UJS в рельсах 3.2?
У меня есть jquery-rails по умолчанию в моем gemfile, но я не могу понять, где обращаться с вызовом ajax, и, честно говоря, я не уверен, как я должен исправить это (особенно в более общем виде). Приложение работает по этому поведению повсюду, поэтому мне нужно придумать какое-то решение, которое имитирует предыдущее.
Да, я думаю, что я бы предпочел, чтобы переворачивать от прототипа, и переместите все это в jQuery. Итак, если бы я захотел сделать решение для этой конкретной страницы, куда бы отправился js? Например, я делаю тяжелый подъем в application.js как: '$ (# role) .update (response);' Или это подходит в конкретном файле? –
EDIT: Хорошо, я прочитал эту страницу, поэтому я реорганизую свой вопрос: Могу ли я сделать это вообще? Например, если я не хочу делать явный '$ (# someid) .update (respones)' для каждого отдельного link_to_remote, который у меня есть, есть ли способ сделать это немного менее целенаправленным? –
как я уже говорил: Используйте файл js.erb вместо рендера: text => 'blah blah' как ответ js. , например: у вас есть ссылка: <% = LINK_TO 'Последние комментарии', latest_comments_path,: Пульт дистанционного управления: истинное%> он идет к индексной действию комментариев контроллера. то для обработки ответа ajax у вас должен быть файл index.js.erb в каталоге/views/comments/с содержимым вроде: $ ('comments'). append ('render partial:' comment ', collection: @comments) и т.д. Надеюсь, что поможет – Muntasim