remote_function继续在GET请求上添加真实性令牌

时间:2010-04-16 21:11:58

标签: ruby-on-rails ajax routing

我在这里遇到了与此帖相似的问题:https://rails.lighthouseapp.com/projects/8994/tickets/106-authenticity_token-appears-in-urls-after-ajax-get-request

的routes.rb

  map.namespace(:admin,  :active_scaffold => true) do |admin|
    admin.resources :regions, :shallow => true do |region| 
      region.resources :birds, :collection => {:search => :get}
    end 
  end

视图

  <%= javascript_tag %Q(
    #{remote_function(:update => 'bird_search', :url => search_admin_region_birds_path(@region.id), :method => :get)}
  ) %>

它显示的网址如下: http://localhost:3000/admin/regions/7/birds/search?authenticity_token=F43BcQUM4z3bl7s21kLZQrqwGkuErF7C9jiNMKFTZTo%3D

应该是: http://localhost:3000/admin/regions/7/birds/search

如果没有这个工作,我的Ajax分页将无效......帮助!

2 个答案:

答案 0 :(得分:0)

您使用的是哪个版本的导轨? 那张票据说它已经关闭了,也许你是在早期版本

http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html#M001653 示例输出没有身份验证令牌

答案 1 :(得分:0)

通过使用Javascript而不是使用RJS来解决此问题。

很多时候,当你的应用程序变得更复杂时,RJS方法不是很可靠,所以要小心。

无论如何,对于这个问题,我将代码更改为:

  <%= javascript_tag %Q(
    new Ajax.Updater('region_birds', '#{of_region_admin_region_birds_path(@region.id)}', {asynchronous:true, evalScripts:true, method:'get'});
  ) %>