.js.erb Ruby on Rails

时间:2012-04-03 03:10:34

标签: ruby-on-rails ruby ruby-on-rails-3

  • 我有一个名为的控制器: listing_controller.erb

     def show
       @base_url = request.env['HTTP_HOST']
       respond_to do |format|
         format.js { render :action => "show.js.erb" }
         format.html { render :action => "show.html.haml"}
       end
     end
    
  • 我有一个名为 js.erb 的文件 show.js.erb

     alert("Hello");
    
  • 当我运行动作节目为什么文件show.js.erb不起作用?

3 个答案:

答案 0 :(得分:0)

  1. Rails很简单,但不是那么容易,你可以在不阅读任何文档的情况下开始编写代码。 你应该重新学习官方教程:http://guides.rubyonrails.org

  2. 您的代码根本不正确。删除它,然后再次阅读官方教程。或使用脚手架生成的代码。

  3. 如果要渲染js文件,请使用

    http://localhost:xx/some_action.js

  4. 以便Rails知道您正在请求js资源。

答案 1 :(得分:0)

如果您在控制器中使用布局,例如

layout "foo/bar"

你必须在行动中没有布局的情况下进行渲染:

respond_to do |format|
 format.js{ render layout: false }
end

答案 2 :(得分:-1)

我相信format.js指的是当你通过get请求指定format参数而不是要包含哪些文件时会发生什么。

除非输出json,否则不应将erb内容用于js文件。你应该只在那里格式化内容。

相反,您应该在“app / assets / javascripts”或“vendor / assets / javascripts”中包含js文件,然后您需要确保通过脚本标记正常包含您的文件。喜欢:= javascript_include_tag "map"

然后,当rails完成所有冷却预编译的东西时,它会将资产文件夹和供应商文件夹中的所有内容合并到一个文件中。如果您愿意,也可以指定其他位置。 Rails通过搜索来确定文件的位置。我相信首先会看app / assets /。