UJS частичный рендеринг в Rails 3 - PullRequest
8 голосов
/ 29 июля 2010

Я изо всех сил пытаюсь понять, как реализовать UJS в Rails (в частности, Rails 3 с jQuery). Я работал с Ryan's Railscast и могу следить за тем, что делать при отправке формы через AJAX, но у меня возникают проблемы с расширением этой концепции для присоединения функции javascript к элементу html в моих файлах просмотра. В конечном счете, я хотел бы иметь возможность создать форму, в которой будет отображаться различный фрагмент в зависимости от того, какой переключатель выбран из серии. Должен ли я смотреть на использование устаревших помощников Prototype для этого? И когда мне нужно создать файл .js.erb?

Извините за вопрос новичка, я не смог найти ничего, что явно обрисовывает концепцию UJS и как использовать его в приложении Rails / переключать код с подхода RJS. Любая помощь будет высоко ценится!

Ответы [ 4 ]

8 голосов
/ 29 июля 2010

Используя remote => true в форме, ваши данные будут отправлены на сервер, и весь возвращенный JavaScript будет просто выполнен в контексте страницы, поэтому вот простой пример:

<%= form_tag '/action_path', :remote => true do %>
  <%= radio_button_tag 'partial', 'one' %>
  <%= radio_button_tag 'partial', 'two' %>
  <%= submit_tag 'select' %>
<% end %>

<div id="partial_holder">

</div>

На сервере

def action
  #do whatever you want with parameters
end

В файле action.js.erb

$('#partial_holder').html("<%= escape_javascript(render(:partial => params[:partial])) %>")
1 голос
/ 08 июня 2011

В файле action.js.erb

$('#partial_holder').html(<%= escape_javascript(render(:partial => params[:partial])) %>)

В приведенной выше строке есть небольшая ошибка: теги ruby ​​внутри метода html должны быть внутри кавычекБудет работать следующее.

$('#partial_holder').html("<%= escape_javascript(render(:partial => params[:partial])) %>")
0 голосов
/ 15 марта 2011

По каким-то странным для меня причинам вышеупомянутое решение не сработало.Это сделало:

Element.replace('element_id', '<%= escape_javascript(render(:partial=>"foo")) %>');

Обратите внимание на ', который окружает блок рубина.

0 голосов
/ 29 июля 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...