2012-04-01 3 views
0

Я как бы новичок в рельсах и недавно пытался реализовать некоторые ajax. На моей странице регистрации пользователя есть три кнопки для создания трех разных типов учетных записей.Задание частичного рендеринга через Ajax в Rails 3

Вот ссылка на каждый:

<%= link_to "sign up", signup_path(:format => 'js'), :remote => true, :rel => 'guest', :id => 'account-signup-link' %> 

В моей JavaScript на странице, когда один из них нажал добавить класс «текущий» его тега привязки. Обратите внимание, что я указываю тип учетной записи с помощью тега rel, это зависит от трех разных ссылок.

Мои new.js.erb файл попал AJAX выглядит следующим образом ...

var template = $('a.current').attr('rel');  
$("<%= escape_javascript render(:file => 'users/_guest.html.erb') %>").insertAfter('#signup-form'); 

Как я могу заменить :file => 'users/_guest.html.erb' с некоторым типом JS переменной, которая будет переключать гостя для отн клике тег. У меня нет проблем с захватом соответствующего rel, я проверил это с помощью простого предупреждения в new.js.erb. Но для моей жизни я не могу получить простую строку :file =>... в зависимости от кнопки нажатой кнопки.

Любая помощь была бы принята с благодарностью.

Спасибо, Крис

ответ

1

Попытка доступа JavaScript переменные не представляется возможным, если у вас есть рубин сделать работу. Также убедитесь, что вы белым списком передаются параметры, поскольку пользователь может передавать произвольные данные.

Возьмите данные rel как часть параметра типа signup_path.js?rel=guest и получите доступ через params [: rel]. Это должен быть запрос POST с момента создания URL-адреса.

+0

Спасибо большое, что помогло! <% = link_to "зарегистрироваться", signup_path (: format => 'js',: form => 'studio'),: remote => true,: rel => 'studio',: id => 'account-signup -link '%> $ (' <% = escape_javascript render (: file => "users/_ # {params [: form]}. html.erb")%> '). insertAfter (' # signup-form-target-target «); –

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