js.erb呈现为文本

时间:2011-04-17 10:42:30

标签: ruby-on-rails-3

我有一个链接,需要在点击时显示隐藏的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');

3 个答案:

答案 0 :(得分:0)

你应该阅读

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

完整解释

答案 1 :(得分:0)

你正在做的一切正确,但你可以改善你的代码

<强>视图

# 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 %>

答案 2 :(得分:0)

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