我有一个名为的控制器: 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");
答案 0 :(得分:0)
Rails很简单,但不是那么容易,你可以在不阅读任何文档的情况下开始编写代码。 你应该重新学习官方教程:http://guides.rubyonrails.org。
您的代码根本不正确。删除它,然后再次阅读官方教程。或使用脚手架生成的代码。
如果要渲染js文件,请使用
以便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 /。