如何通过link_to与Rails从页面上的其他字段提交值?

时间:2010-10-25 01:55:41

标签: ruby-on-rails

这是我想要做的:

<%= 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 个答案:

答案 0 :(得分:2)

如果您正在使用原型或jQuery,那么类似的东西将访问字段中的值:

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

所以,将它添加到:with with statement:

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

您可以在JS控制台中进行游戏以获得正确的输出,然后将其放入link_to语句中。

答案 1 :(得分:1)

在早期版本的rails中,

link_to_remote 可以解决您的问题。但是从rails3中,link_to_remote不再存在,因为它们远离了突兀的javascript。但是,您可以使用 link_to_function ,它可以调用javascript函数来执行get。有关详细信息,请参阅此link_to syntax with rails3 (link_to_remote) and basic javascript not working in a rails3 app?此讨论。

答案 2 :(得分:1)

好的,不引人注意的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'>