2

我想知道是否从 rails3 中删除了 :with 属性,因为我在 rails3 api 中找不到任何东西 - http://rails3api.s3.amazonaws.com

任何人都有关于如何使用 :with 参数通过 link_to 发送数据的线索或提示

非工作示例:

= link_to "Foo", {:action => "filter", :filter => "filter1",:with => "'test='+$('search').value"}, :remote => true, :class => "trash unselected", :id => "boo"

谢谢!

4

3 回答 3

2

我今天为此苦苦挣扎,过了一会儿,我想出了 rails.js 中的小技巧。在 handleRemote 方法中,我改变了这个:

} else {
    method = element.attr('data-method');
    url = element.attr('href');
    data = null;
}

对此:

} else {
    method = element.attr('data-method');
    url = element.attr('href');
    data = eval(element.attr('data-with'));
}

多亏了这一点,现在我可以像这样使用 link_to :remote 了:

<%= link_to "link", some_path, :remote => true, 'data-with' => "'address=' + $j('#office_address').val();" %>

注意:这仅在您使用 jquery 时有效,但将其应用于原型应该不难

于 2011-03-11T10:59:10.837 回答
1

这违背了非侵入性 javascript 的观点,这就是它被删除的原因。尝试在这里查看有关该主题的 railscast:http ://railscasts.com/episodes/205-unobtrusive-javascript

您应该尝试另一种方法。

于 2010-03-24T17:56:34.027 回答
1

虽然有一种方法可以解决它。

在视图中使用它作为指导:

link_to "Foo", {:action => "filter", :filter => "filter1"}, {:remote => true, :class => "trash unselected", :id => "boo", 'data-with' => "'&test='+$('search').value"}

(将 :with 移至第二部分并使其成为“data-with”)

并将其添加到底部:

<script type="text/javascript" charset="utf-8">
  $$('a[data-remote=true]').each(function(a){
    a.onclick = function(){a.setAttribute('href', a.getAttribute('href') + eval(a.getAttribute('data-with')))};
  });
</script>

当然,您需要加载原型(在 rails 应用程序的默认 javascripts 中)


对于比这个单线更好的东西:http: //gist.github.com/451508

使用你不需要开始的要点:with with & or ?

于 2010-06-24T14:27:35.410 回答