【问题标题】:js.erb is rendered as textjs.erb 呈现为文本
【发布时间】:2011-04-17 10:42:29
【问题描述】:

我有一个链接需要在点击时显示隐藏的 Div。 为此,我正在使用: <%=link_to video.title,display_path(:format=>:js,:id=>video.id),:remote=>true%> 在我拥有的控制器中:

def display
        @video=Video.find(params[:id])
        respond_to do |format|
            format.js 
        end
    end

在 js.erb 中,我有,

$('#vid_<%=@video.id%>').fadeIn('slow');

但是当我运行应用程序时,单击链接后,js.erb 会呈现为文本。它只显示:

$('#vid_<%=@video.id%>').fadeIn('slow');

【问题讨论】:

  • 您使用的是什么版本的 Rails?以及您使用的 JS 库是什么?
  • macarthy,我使用 Rails 3.0.6 和 jQuery 库

标签: ruby-on-rails-3


【解决方案1】:

你应该阅读

Rails Ajax: .js.erb rendered as text, not JS

完整的解释

【讨论】:

  • 我已经读过了。但我之前已经实现了同样的代码,它工作得很好。想知道为什么它不工作
  • macarthy,我读到了。它提到另一种解决方案是使用 rails jQuery 适配器,这正是我正在做的。如果我故意在 rails.js 中打错字,Firebug 甚至会引发错误跨度>
【解决方案2】:

你做的一切都是正确的,但你可以稍微改进你的代码

观看次数

# use spaces to ident all this stuff and write less if it is possible:
<%= link_to video.title, [:display, video], :remote => true %>

控制器

class VideosController < ApplicationController  
  respond_to :html, :js
  ...
  def display
    @video=Video.find(params[:id])
    respond_with @video
  end
  ...
end

display.js.erb

$('#vid_<%= @video.id %>').fadeIn('slow');

请确保您已经安装了 jQuery:

rails g jquery:install

并将其包含在您的应用程序布局文件中。

<%= javascript_include_tag :defaults %>

【讨论】:

    【解决方案3】:

    好的,我找到了解决方案。我犯了一个愚蠢的错误。我在创建应用程序时忘记跳过原型。这在我尝试使用 Jquery 时造成了麻烦。现在一切都很好。

    【讨论】:

      猜你喜欢
      • 2016-12-27
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      • 2015-04-19
      • 1970-01-01
      • 2016-09-10
      • 1970-01-01
      • 2014-10-08
      相关资源
      最近更新 更多