当前位置:  开发笔记 > 编程语言 > 正文

Rails form_for:remote => true不调用js方法

如何解决《Railsform_for:remote=>true不调用js方法》经验,为你挑选了4个好方法。

我不知道为什么这不起作用,我正在学习rails并且我正在读一本书,它说这样做:

    <%= form_for([@article,@article.comments.new ], :remote=>true, :html => {:display: none;' }) do |f|%>
    
<%= f.label :name %> <%= f.text_field :name %>
<%= f.label :email %> <%= f.text_field :email %>
<%= f.label :body %> <%= f.text_area :body %>
<%= f.submit %> <% end %>

但它不起作用,当我在firebug中检查请求时,url不会以.js结尾,你有什么想法吗?



1> DanneManne..:

当你检查在firebug中发出的请求时,仅因为url没有以.js结尾,这并不意味着它不是从javascript调用的.验证是否应检查请求标头以查看Accept参数是什么.如果它说"application/javascript"那么一切都很好.

其次,在开始尝试:remote => true时,一个非常常见的问题是所需的javascript库不包含在您的代码中.所以我的猜测是你的布局中缺少以下代码:

<%= javascript_include_tag :defaults %>
<%= csrf_meta_tag %>

如果是这种情况,只需将其包含在布局的标记内即可.



2> nathanvda..:

最有可能发生的是您丢失了rails.js文件,无论您使用的是原型还是jquery,它都会为您处理.

如果您使用的是jQuery,获取所有需要文件的最简单方法是使用jquery-railsgem.这将添加一个生成器来安装jquery和所需的rails.js.

在rails应用程序根目录中键入类似内容:

rails g jquery:install

然后,在你application.html.erb的内线添加

<%= javascript_include_tag :defaults %>

或明确(不要忘记单独包含您的jquery):

<%= javascript_include_tag :rails, :application %>

[编辑:使用资产管道的Rails 3.1或更高版本]

使用jquery-rails gem(如上所述)并添加以下行app/assets/javascripts/application.js(如果它们不存在):

//= require jquery
//= require jquery_ujs

希望这可以帮助!



3> Manish Shriv..:

检查你的/app/assets/javascript/application.js文件

它应该包含在那里的文件下面.jquery_ujs负责工作remote=> true功能.

require `jquery`
require `jquery_ujs`

快乐编码!!



4> Taimoor Chan..:

如果尚未添加jquery_ujs文件,则会发生此错误.你刚才包含了jquery文件.

因此,您需要在视图中手动添加这两个文件,或者在application.js或您用于特定布局的任何其他文件中要求它们.

根据您的情况,您可以遵循第一或第二个解决方案.

第一解决方案

<%= javascript_include_tag :jquery, :jquery_ujs %>

第二解决方案

    app/assets/application.js中同时需要jqueryjquery_ujs

    //= require jquery.js
    
    //= require jquery_ujs
    

    在您的特定布局文件中包含application.js 文件.

    <%= javascript_include_tag :application %>
    

注意:

还要在两个解决方案的布局文件中添加csrf标记.

<%= csrf_meta_tag %>

我想你的Gemfile中有以下代码并且已经安装了这个Gem.

gem 'jquery-rails'

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有