【发布时间】:2015-07-31 18:16:01
【问题描述】:
我有一个控制器动作,我试图只从中渲染 js。这就是我所拥有的
def get_script
respond_to :js
render :script
end
我正在使用 respond_to :js 希望强制请求只响应 js。然后我调用 render :script 来加载一个名为 script.js.erb 的文件
我的要求如下
Completed 500 Internal Server Error in 15ms (ActiveRecord: 0.5ms)
ActionView::MissingTemplate (Missing template widgets/get_script, application/get_script with {:locale=>[:en], :formats=>[:js, :html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder]}. Searched in:
* "/home/jkoehms/TECC/tecc/app/views"
* "/home/jkoehms/.rvm/gems/ruby-2.0.0-p643/gems/devise-3.5.1/app/views"
)
所以这里有两个问题。尽管请求作为 JS 处理,但渲染器正在寻找 js 或 html,如格式部分所示。其次,当它应该寻找 script.js.erb 时,渲染器正在寻找 get_script.js.erb。我使用以下文档作为渲染资源:Layouts and Rendering
问题:
1.) respond_to :js 做了我希望它做的事情,还是我必须把它放在一个 do |format| 中?屏蔽?
2.) 为什么 render :script 不寻找 script.js.erb?
【问题讨论】:
-
你做
render js: :script.. 那会奏效。不需要respond_to :js -
这给出了这个错误类型错误(没有将符号隐式转换为字符串):
-
好的,然后做
render :js => 'script' -
这实际上将javascript“脚本”加载为vanilla javascript。我让它使用部分渲染部分:“widgets/script.js.erb”不是最好的解决方案
-
没有得到你.....:/为什么
partial?那你应该提一下.. :D
标签: ruby-on-rails model-view-controller rendering