복붙노트

[RUBY-ON-RAILS] 어떻게 레일 3 컨트롤러에서보기 파일의 기본 경로를 변경하려면?

RUBY-ON-RAILS

어떻게 레일 3 컨트롤러에서보기 파일의 기본 경로를 변경하려면?

나는 ProjectsController라는 컨트롤러를 가지고있다. 기본적으로 그것의 행동, 응용 프로그램 / 뷰 / 프로젝트 내부의 전망을 찾는다. 나는 컨트롤러의 모든 메소드 (인덱스, 쇼, 새, 편집 등)에 대한 해당 경로를 변경하고 싶습니다.

예를 들면 :

class ProjectsController < ApplicationController

  #I'd like to be able to do something like this
  views_path 'views/mycustomfolder'

  def index
    #some code
  end

  def show
    #some code
  end

  def new
    #some code
  end

  def edit
    #some code
  end
end

내가 렌더링과 각 방법을 변경하지만, 그들 모두에 대한 기본 경로를 정의하고 있지 않다 유의하시기 바랍니다. 이게 가능해? 그렇다면, 어떻게?

감사합니다!

해결법

  1. ==============================

    1.더가 내장되어 있다면 방법이 들어, 아마 당신은 해당 컨트롤러 렌더링을 무시할 수 없다?

    더가 내장되어 있다면 방법이 들어, 아마 당신은 해당 컨트롤러 렌더링을 무시할 수 없다?

    class MyController < ApplicationController
      # actions ..
    
      private
    
      def render(*args)
        options = args.extract_options!
        options[:template] = "/mycustomfolder/#{params[:action]}"
        super(*(args << options))
      end
    end
    

    이 연습에서 작동하거나 전혀 작동하는지 얼마나 잘 확실하지.

  2. ==============================

    2.참조 ActionView :: ViewPaths :: ClassMethods 번호의 prepend_view_path.

    참조 ActionView :: ViewPaths :: ClassMethods 번호의 prepend_view_path.

    class ProjectsController < ApplicationController
        prepend_view_path 'app/views/mycustomfolder'
        ...
    
  3. ==============================

    3.당신은 당신의 컨트롤러 내에서이 작업을 수행 할 수 있습니다

    당신은 당신의 컨트롤러 내에서이 작업을 수행 할 수 있습니다

      def self.controller_path
        "mycustomfolder"
      end
    
  4. ==============================

    4.당신은 무언가를 같이 추가 할 수 있습니다 :

    당신은 무언가를 같이 추가 할 수 있습니다 :

    paths.app.views << "app/views/myspecialdir"
    

    는 config에서 / application.rb 파일은 레일 뷰 템플릿을 위해 다른 디렉토리에서 찾아 보게한다. 한 가지주의해야 할 점은 여전히 ​​컨트롤러와 일치하는보기 파일을 찾을 것이라는 점이다. 그래서 당신이 그것을 렌더링 "응용 프로그램 / 뷰 / myspecialdir / 홈 / index.html.erb"라는 뭔가를 살펴 보겠습니다보기에 위의 설정으로 HomeController라는 이름의 컨트롤러가있는 경우.

  5. ==============================

    5.당신은 응용 프로그램 수준에서 모든 뷰에 대한 기본 경로를 변경하려면 다음과 같이 뭔가를 할 수 -

    당신은 응용 프로그램 수준에서 모든 뷰에 대한 기본 경로를 변경하려면 다음과 같이 뭔가를 할 수 -

    class ApplicationController < ActionController::Base
      before_action :set_views
    
      private
    
      def set_views
        prepend_view_path "#{Rails.root.join('app', 'views', 'new_views')}"
      end
    end
    

    그리고 원본과 동일한 디렉토리 구조 다음 폴더 new_views의 모든 뷰를 작성합니다.

  6. from https://stackoverflow.com/questions/4301249/how-to-change-the-default-path-of-view-files-in-a-rails-3-controller by cc-by-sa and MIT license