Как я могу отправить значение из другого поля на странице через link_to с Rails? - PullRequest
1 голос
/ 25 октября 2010

Вот что я хочу сделать:

<%= link_to "Approve", brand_user_brand_roles_path(@brand),
    :with => "forms[0]['user_brand_role_role_id'].value", :method => "POST", :remote => true %>

Я знаю, что это не работает.Я хочу вызывать метод контроллера удаленно, включая в качестве параметра значение, которое выбирается в поле, отличном от того, по которому щелкают.

Как я могу использовать Javascript для ссылки на другое поле в link_to?Или есть другая стратегия, которая лучше?

Ответы [ 3 ]

2 голосов
/ 25 октября 2010

Если вы используете прототип или jQuery, что-то подобное получит доступ к значению в поле:

$('#id-of-field').val() # or value() depending on your js

Итак, добавьте это в ваш оператор: with:

:with => "'role_id=' + $('#user_brand_role_role_id').value() +
 '&other_value=' + $('#id_of_other_thing').value()"

Вы можете поиграть в консоли JS, чтобы получить правильный вывод, а затем поместить его в свой оператор link_to.

1 голос
/ 26 октября 2010

Хорошо, ненавязчивое время javascript, основываясь на комментариях к моему другому ответу.

Я взял это из одного из моих проектов, поэтому вам, возможно, придется адаптировать его к вашим потребностям, но это должно дать вам представление о том, что делать. JQuery 1.3.2, к вашему сведению.

  $('form.link_id').livequery('submit', function(){
    $.ajax({
      url: $(this).attr('action'),
      data: $(this).serializeArray(),
      type: 'POST',
      error: function(xhr, status, error){
        alert("Save failed. Please check the form and try again.\n" + (error || status));
      },
      success: function(content){
        // do something with reply if you want.
      },
      dataType: 'html'
    });
    return false;
  });

Тогда ссылка довольно проста:

<a href='/resource/new' id='link_id'>
1 голос
/ 25 октября 2010

link_to_remote в более ранних версиях рельсов решило бы вашу проблему.Но от rails3 link_to_remote больше не присутствует, так как они отошли от навязчивого JavaScript.Однако вы можете использовать link_to_function , которая может вызывать функцию javascript, которая сделает все за вас.Обратитесь к синтаксису link_to с rails3 (link_to_remote) и базовому javascript, не работающему в приложении rails3? в этом обсуждении для получения дополнительной информации.

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