簡體   English   中英

Rails 5.2-無法從response_to塊中訪問調用控制器方法

[英]Rails 5.2- Cannot access calling controller method from within respond_to block

我的應用程序控制器中有此方法,該方法為相應的用戶類型呈現視圖模板。

class ApplicationController < ActionController::Base
  def render_for_user
    view = caller_locations.first.label
    if current_user.blank?
      render "#{view}_guest"
    else
      render "#{view}_#{current_user.role.downcase}"
    end
  end
end

我以以下方式調用此方法:

Class CommentController < ActionController::Base
  def show
    @comment = Comment.find(params[:id])
    render_for_user
  end
end

我遇到麻煩的地方是從respond_to塊內部調用此方法。 這是一個例子:

Class CommentController < ActionController::Base
  def show
    @comment = Comment.find(params[:id])
    respond_to do |format|
      format.js
      format.html { render_for_user }
    end
  end
end

由於應用程序控制器中的控制器方法只是一步一步獲取調用方法的名稱,因此它被response_to塊擊敗了。

我的問題是:查看上面的代碼,是否有更好,更靈活的方法來獲取調用控制器方法?

我的問題是:查看上面的代碼,是否有更好,更靈活的方法來獲取調用控制器方法?

controller_name將返回name.demodulize.sub(/Controller$/, '').underscore ,這可能是您想要的。 我從未見過有人需要使用caller_location。 同樣,有action_name

還有params[:controller]params[:action]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM