如何渲染与 Rails 中的成员操作同名的 js.erb?

Posted

技术标签:

【中文标题】如何渲染与 Rails 中的成员操作同名的 js.erb?【英文标题】:How to render a js.erb with the same name as a member action in Rails? 【发布时间】:2017-05-12 21:28:30 【问题描述】:

我认为这会自动进行,因为我已经设法为我的销毁操作这样做了,但没有激活 JS。

我的控制器动作如下所示:

  def visability_toggle
    @picture = Picture.find(params[:id])
    @picture.toggle! :visable

    respond_to do |format|
      format.js  render :action => 'visability_toggle' 
    end
  end

现在我想要匹配我的控制器的pictures/_visability_toggle.js.erb 看起来像这样:

alert('Picture id: #@picture.id');

动作本身有效。当我在控制器操作中使用render js: ... 添加它时,这个 JS 也是正确且有效的。

【问题讨论】:

不确定你真正的问题是什么,但如果你想让 rails 自动检测你的 js.erb 文件,不要在它前面加上下划线,就好像它是一个部分 就是这样。谢谢。 【参考方案1】:

如前所述:我应该在命名模板时省略下划线。

【讨论】:

【参考方案2】:

试试这个..

respond_to do |format|
    format.js  :location => path_to_controller_method_url(argument) 
end

如何使用 Ruby on Rails 响应控制器中的另一个 js 文件?

respond_to do |format|
    format.js 
       :template => "pictures/visability_toggle.js.erb", 
       :layout => false
    
end

【讨论】:

以上是关于如何渲染与 Rails 中的成员操作同名的 js.erb?的主要内容,如果未能解决你的问题,请参考以下文章

Rails - 格式和渲染 - 它们是如何工作的?

Rails:从另一个控制器渲染 .js.erb?

为什么C ++允许类成员函数中的局部变量与成员变量同名?

如果构造函数参数与 C++ 中的成员变量同名怎么办?

在 Swift 3 中将类与同名的实例成员区分开来

js.erb 不在 Rails 6 中渲染