2010-08-03 4 views
8

Есть ли простой способ переименовать контроллер? Единственный способ, которым я знаю, - это либо сделать это вручную, либо создать новый контроллер, переместить код и уничтожить старый. Похоже, что должен быть программный способ сделать это.Легкий способ переименования контроллеров рельсов

+0

Я не совсем понимаю, в чем заключается трудность ... Вы беспокоитесь о переименовании маршрутов и ссылок? –

+0

Это просто много работы, когда у вас есть куча, я ищу, чтобы переместить много моих контроллеров в пространство имен для лучшей организации. – hadees

+1

@ Андрес: сложная часть также перемещает базу данных. RubyMine забывает об этом при рефакторинге. –

ответ

4

Некоторые IDE (как RubyMine от IntelliJ) позволят вам Refactor -> Переименовать файл/переменную/метод и т. Д., Хотя он не так надежен в динамическом языке, как Ruby, как на языке Java.

2

Я только что сгенерировал контроллер, и поэтому у меня не было связанной модели или таблицы базы данных. Я решил просто переименовать все файлы и соответствующий контент, который был создан при создании контроллера. Это не «простой» способ переименовать контроллер, но я был уверен в своих знаниях о том, что было создано и что мне нужно для рефакторинга.

Существует хороший путеводитель по ruby on rails guides сайтов, который показывает, что генерируется и то, что вам нужно изменить или вы можете увидеть, что типичный контроллер генерирует ниже:

$ bin/rails generate controller Greetings hello 
create app/controllers/greetings_controller.rb 
    route get "greetings/hello" 
invoke erb 
create app/views/greetings 
create app/views/greetings/hello.html.erb 
invoke test_unit 
create test/controllers/greetings_controller_test.rb 
invoke helper 
create app/helpers/greetings_helper.rb 
invoke assets 
invoke coffee 
create  app/assets/javascripts/greetings.js.coffee 
invoke scss 
create  app/assets/stylesheets/greetings.css.scss 

Кроме того, не забудьте изменить содержимое файлов выше, такие как описания в ваших файлах активов, имена классов контроллеров и имена модулей и т. д.

Смежные вопросы