2016-01-04 8 views
3

Как я могу вызвать создание эшафот из представления?(Rails 4.2) Как вызвать генерацию эшафот из представления?

Например, предположим, что у меня есть метод, как это:

def scaffold_generation 
    system "rails g scaffold TodoList task author" 
end 

Как я могу сделать кнопку на моем «example_page.html.erb» вызвать этот метод для выполнения команды на сервере? (Не беспокойтесь о безопасности здесь)

+3

Почему вы хотите это сделать? Чего вы пытаетесь достичь? Вызов динамических динамиков «rails» динамически не имеет большого смысла. После запуска все создалось, и вы не сможете запустить этот генератор еще раз. Кроме того: не выполняется миграция и будет удалена при следующем развертывании ... – spickermann

+0

Это просто пример, который мне нужен, чтобы все началось. У меня есть система, в которой мне придется создавать много и много CRUD для аудита информации о компании, большинство из которых будут точно такими же, кроме данных, поэтому я буду использовать генераторы для динамической подготовки структуры MVC и некоторые скрипты для адаптации/дезинфекции представлений и добавления стилей, фильтров, функциональных возможностей, тестов и документации, чтобы свести к минимуму усилия, поэтому мне нужно только работать, когда на нем задействована бизнес-логика или что-то очень конкретное, что сэкономит мне огромное количество времени на повторную работу. –

ответ

2

1: Создание формы с помощью Form Tag

<%= form_tag('/create_scaffold') do -%> 
    <div><%= submit_tag 'Create Scaffold' %></div> 
<% end %> 

2: Написать маршруты, чтобы соответствовать входящий запрос.

match '/create_scaffold', to: 'examples#scaffold_generation', via: :all 

3:

class ExamplesController < ApplicationController 

    def scaffold_generation 
     system "rails g scaffold TodoList task author" 
     system "rake db:migrate" #=> use this so that, it won't throw any errors. 
     render :text => "Whoa !!! Done" 
    end 
end 
+0

Возможно, вам следует пояснить, что ваше 'scaffold_generation' должно быть помещено внутри контроллера, называемого' ExampleController'? – nathanvda

+0

Спасибо Vinay, работал как шарм! –

1

При создании кнопки или ссылки следует указать на пути URL-адрес не только вспомогательный метод. Быстрое исправление для этого - это добавить путь к вспомогательному методу.

Таким образом, вы можете попробовать

в помощнике

def scaffold_generation(url) 
    system "rails g scaffold TodoList task author" 
    url 
end 

и ввиду

<%= button_to "Scaffold Generation", scaffold_generation(root_path), :method => :get %>