这是我想要做的:
<%= 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中的其他字段?或者还有另一种更好的策略吗?
答案 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)
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'>