2012-02-01 174 views
0

我需要一种方法来在Rails 3中创建一个链接,它将发送带有多个参数的发布请求并且不会导致重新加载。我是用一种形式:Ruby on Rails链接请求发送

= form_for Vote.new, :remote => true do |f| 
    .actions 
    = f.submit 'Vote' 
    = hidden_field_tag('question', q.id) 
    = hidden_field_tag('seat', @seat.id) 

但它减缓我的渲染时间缩短了不少,我不希望有一个提交按钮。有没有其他方式提交这样的表单,而不使用按钮?

我试过= link_to等,但似乎无法让参数正常工作。

回答

1

你可以使用javascript来做一个链接做一个表单发布时单击(杂乱,但类似于脚手架如何删除)或使用css风格的按钮看起来像一个链接。

+0

+1 “使用CSS样式按钮,看起来像一个链接” - 狡猾! – 2012-02-01 03:37:05

+0

是的,但仍然渲染大量表单比渲染大量链接要慢。当有25个form_for和一个链接的问题时,每个视图渲染大约40ms – JRPete 2012-02-01 05:54:38

2

我会用使用参数的链接是这样的:

= link_to "Post", new_vote_path(vote: {question_id: question.id, seat_id: seat.id}, remote: true, method: :post, rel: "nofollow" 

我用这个没有远程:真实的,但我不明白为什么它不应该用jQuery轨工作。如果它不起作用,我会假设jquery $ .ajax对象没有设置该方法的类型。您可能可以覆盖此内容或创建您自己的单击事件绑定。

仅供参考 - 的link_to API: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to