【发布时间】:2017-06-20 12:48:20
【问题描述】:
我的应用程序使用 Rails 5.1,每当我点击带有 link_to 和 remote: true 的 link_to 时,我都会收到 InvalidCrossOriginRequest 错误。关闭伪造保护后,应用程序最终向服务器发出完整的GET 请求并显示 javascript。
这是链接:
= link_to 'Example', example_url, remote: true
example.js.erb:
$('.example').html('alert("example message")');
路线:
scope :js, defaults: { format: :js } do
#### Example
get 'example', to: 'examples#example'
end
控制器:
def example
respond_to do |format|
format.html { redirect_to root_url, alert: 'Page not accessible' }
format.js
end
end
我在模板中包含了 javascript:
= javascript_include_tag 'application', 'data-turbolinks-track': 'reload'
并且我添加了必要的js资产路径:
//= require_self
// jQuery
//= require jquery
//= require jquery_ujs
【问题讨论】:
-
应用程序最终向服务器发出完整的 GET 请求并显示 javascript。 你希望它做什么?
-
@Pavan 它“应该”发出 AJAX 请求。 ->
remote: true -
你提到它是显示javascript。这并不意味着它在发出 AJAX 请求?
-
在 Rails5 中,您不再需要 //=require self 部分。所以删除它。另外,您的路线在应该是 json 时指定了 ujs 格式,对吗?你的路线应该是:范围:ujs,默认值:{格式::json}做
-
请不要破坏您的帖子。一旦您发布了一个问题,它就属于整个 Stack Overflow 社区(在 CC BY-SA 许可下)。如果您想取消此帖子与您帐户的关联,请参阅What is the proper route for a disassociation request?
标签: javascript jquery ruby-on-rails ajax ruby-on-rails-5