【问题标题】:Render js.erb from controller从控制器渲染 js.erb
【发布时间】: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


【解决方案1】:

你有没有在你的视图中尝试过这个?

render "widgets/script.js.erb", format: :js

【讨论】:

    猜你喜欢
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多