2016-01-04 87 views
3

如何從視圖中觸發腳手架代?(Rails 4.2)如何從View中觸發腳手架生成?

例如,假設我有一個這樣的方法:

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