ryu*_*ice 33 ruby-on-rails ruby-on-rails-3
我不知道为什么这不起作用,我正在学习rails并且我正在读一本书,它说这样做:
<%= form_for([@article,@article.comments.new ], :remote=>true, :html => {:style=>'display: none;' }) do |f|%>
<div class="field">
<%= f.label :name %>
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :email %>
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.label :body %>
<%= f.text_area :body %>
</div>
<%= f.submit %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
但它不起作用,当我在firebug中检查请求时,url不会以.js结尾,你有什么想法吗?
Dan*_*nne 34
当你检查在firebug中发出的请求时,仅因为url没有以.js结尾,这并不意味着它不是从javascript调用的.验证是否应检查请求标头以查看Accept参数是什么.如果它说"application/javascript"那么一切都很好.
其次,在开始尝试:remote => true时,一个非常常见的问题是所需的javascript库不包含在您的代码中.所以我的猜测是你的布局中缺少以下代码:
<%= javascript_include_tag :defaults %>
<%= csrf_meta_tag %>
Run Code Online (Sandbox Code Playgroud)
如果是这种情况,只需将其包含在<head>布局的标记内即可.
nat*_*vda 21
最有可能发生的是您丢失了rails.js文件,无论您使用的是原型还是jquery,它都会为您处理.
如果您使用的是jQuery,获取所有需要文件的最简单方法是使用jquery-railsgem.这将添加一个生成器来安装jquery和所需的rails.js.
在rails应用程序根目录中键入类似内容:
rails g jquery:install
Run Code Online (Sandbox Code Playgroud)
然后,在你application.html.erb的内线添加
<%= javascript_include_tag :defaults %>
Run Code Online (Sandbox Code Playgroud)
或明确(不要忘记单独包含您的jquery):
<%= javascript_include_tag :rails, :application %>
Run Code Online (Sandbox Code Playgroud)
[编辑:使用资产管道的Rails 3.1或更高版本]
使用jquery-rails gem(如上所述)并添加以下行app/assets/javascripts/application.js(如果它们不存在):
//= require jquery
//= require jquery_ujs
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
检查你的/app/assets/javascript/application.js文件
它应该包含在那里的文件下面.jquery_ujs负责工作remote=> true功能.
require `jquery`
require `jquery_ujs`
Run Code Online (Sandbox Code Playgroud)
快乐编码!!
如果尚未添加jquery_ujs文件,则会发生此错误.你刚才包含了jquery文件.
因此,您需要在视图中手动添加这两个文件,或者在application.js或您用于特定布局的任何其他文件中要求它们.
根据您的情况,您可以遵循第一或第二个解决方案.
第一解决方案
<%= javascript_include_tag :jquery, :jquery_ujs %>
Run Code Online (Sandbox Code Playgroud)
第二解决方案
在app/assets/application.js中同时需要jquery和jquery_ujs
//= require jquery.js
//= require jquery_ujs
Run Code Online (Sandbox Code Playgroud)在您的特定布局文件中包含application.js 文件.
<%= javascript_include_tag :application %>
Run Code Online (Sandbox Code Playgroud)注意:
还要在两个解决方案的布局文件中添加csrf标记.
<%= csrf_meta_tag %>
Run Code Online (Sandbox Code Playgroud)
我想你的Gemfile中有以下代码并且已经安装了这个Gem.
gem 'jquery-rails'
Run Code Online (Sandbox Code Playgroud)
小智 -11
改变:
[@article,@article.comments.new ]
Run Code Online (Sandbox Code Playgroud)
为了
@article
Run Code Online (Sandbox Code Playgroud)
我建议您阅读相关部分的 API:http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html
| 归档时间: |
|
| 查看次数: |
44709 次 |
| 最近记录: |