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

Как я могу запустить генерацию скаффолдов из вида?

Например, допустим, у меня есть такой метод:

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

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

2 ответа

Решение

1: создать форму с помощью тега формы

<%= 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

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

Так что вы можете попробовать

в помощнике

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

и ввиду

<%= button_to "Scaffold Generation", scaffold_generation(root_path), :method => :get %>
Другие вопросы по тегам