Ruby on Rails 생성 뷰
rails generate 명령을 사용하여 뷰를 별도로 생성하는 방법이 있습니까? 나는 또한 존재하는 작업을 수행하기 위해 gem을 기꺼이 설치할 것입니다. 기본적으로 스캐 폴딩 명령은 나에게 너무 많은 것을 제공하고 오히려 컨트롤러를 손으로 코딩하고 싶습니다. 그러나 레코드 용 테이블로 인덱스 뷰를 작성하는 것은 매우 효율적이지 않습니다.
컨트롤러 생성기를 사용하여 컨트롤러와 뷰를 생성 할 수 있습니다.
rails g controller controllername new create
그러면 작업 new
과 create
해당 뷰 가 생성됩니다 .
이것으로 경로를 수동으로 설정해야합니다.
첫 번째 부분은 모델 / 컨트롤러의 이름이고 두 번째 부분은 작업입니다.
한 가지 특별한 상황은 기존 컨트롤러에 새 보기를 추가하려는 경우입니다 .
이 경우 일반 명령을 사용하되 'n'
기존 파일을 덮어 쓰지 않도록 메시지가 표시 될 때마다 말해야 합니다.
예를 들어 다음과 'invite'
같은 기존 컨트롤러에 호출 된 뷰를 추가합니다 'projects'
.
smith@ubuntuSrv16DEV4:~/railsapps/project_manager$ rails -v
Rails 5.1.4
smith@ubuntuSrv16DEV4:~/railsapps/project_manager$ rails generate controller projects invite
Running via Spring preloader in process 46253
conflict app/controllers/projects_controller.rb
Overwrite /home/smith/railsapps/project_manager/app/controllers/projects_controller.rb? (enter "h" for help) [Ynaqdh] n
skip app/controllers/projects_controller.rb
route get 'projects/invite'
invoke erb
exist app/views/projects
create app/views/projects/invite.html.erb
invoke test_unit
conflict test/controllers/projects_controller_test.rb
Overwrite /home/smith/railsapps/project_manager/test/controllers/projects_controller_test.rb? (enter "h" for help) [Ynaqdh] n
skip test/controllers/projects_controller_test.rb
invoke helper
identical app/helpers/projects_helper.rb
invoke test_unit
invoke assets
invoke coffee
identical app/assets/javascripts/projects.coffee
invoke scss
conflict app/assets/stylesheets/projects.scss
Overwrite /home/smith/railsapps/project_manager/app/assets/stylesheets/projects.scss? (enter "h" for help) [Ynaqdh] n
skip app/assets/stylesheets/projects.scss
smith@ubuntuSrv16DEV4:~/railsapps/project_manager$
이전에 sameers가 언급했듯이 뷰를 생성하는 방법을 보여주는 게시물이 있습니다. 매우 편리한 rails 기본 템플릿을 사용하여 모델에 대한 모든 뷰를 생성합니다.
나처럼 좀 더 사용자 정의 가능한 것을 원한다면 다음을 얻을 수 있습니다.
자신 만의 생성기를 만들어 이와 같은 것을 만들 수 있습니다.
레일은 뷰를 생성합니다. NAME VIEW [옵션]
이를 위해 다음을 수행해야합니다.
rails generate generator view
그러면 lib / generators / view / 폴더에 몇 개의 파일이 생성됩니다.
view_generator.rb 파일을 열고 다음 코드를 추가하십시오.
class ViewGenerator < Rails::Generators::Base
source_root File.expand_path('templates', __dir__)
argument :name, type: :string
argument :action, type: :string
def generate_view
template "#{file_name}.html.erb", "app/views/#{folder_name}/#{file_name}.html.erb"
end
private
def folder_name
name.underscore
end
def file_name
action.underscore
end
def type
name.titleize.singularize
end
def down_type
name.downcase.singularize
end
def render_form
"<%= render 'form', #{down_type}: @#{down_type} %>"
end
def render_link_back
"<%= link_to 'Back', #{folder_name}_path %>"
end
end</pre>
Next you need to create the file that we are using actual template used in generate_view method.
Using the action new as example, create a filelib/generators/view/new.html.erb and add the following.
<h1>New <%= type %></h1>
<%= render_form %>
<%= render_link_back %>
Customize the template view as much as you want. You will need to add the _form.html.erb as well. Add any additional variables and logic in your view_generator.rb file and you are done.
It's more work but can be worth it if you find yourself generating similar views all the time.
Best use case I can think of for this approach is if you white label your platform and need to generate multiple files for a clients profile.
ReferenceURL : https://stackoverflow.com/questions/5614083/ruby-on-rails-generating-views
'programing' 카테고리의 다른 글
Ruby-on-Rails : 다중 has_many : through 가능? (0) | 2021.01.14 |
---|---|
"활성화 / 비활성화"라는 단어는 무엇입니까? (0) | 2021.01.14 |
belongs_to 다형성과 함께 accepts_nested_attributes_for (0) | 2021.01.14 |
Java에서 확인되지 않은 호출 경고를 수정하는 방법은 무엇입니까? (0) | 2021.01.14 |
git status 출력을 위해 호출기를 어떻게 켤 수 있습니까? (0) | 2021.01.14 |