如何從視圖中觸發腳手架代?(Rails 4.2)如何從View中觸發腳手架生成?
例如,假設我有一個這樣的方法:
def scaffold_generation
system "rails g scaffold TodoList task author"
end
我怎樣才能讓我的「example_page.html.erb」一鍵觸發此方法在服務器上執行命令? (有關此安全不用擔心)
如何從視圖中觸發腳手架代?(Rails 4.2)如何從View中觸發腳手架生成?
例如,假設我有一個這樣的方法:
def scaffold_generation
system "rails g scaffold TodoList task author"
end
我怎樣才能讓我的「example_page.html.erb」一鍵觸發此方法在服務器上執行命令? (有關此安全不用擔心)
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
也許你應該澄清一下,你的'scaffold_generation'應該放在名爲'ExampleController'的控制器中? – nathanvda
感謝Vinay,工作就像一個魅力! –
如果要創建一個按鈕或鏈接應該指出的URL路徑不只是一個輔助方法。快速解決這個問題是添加一個輔助方法的路徑。
所以,你可以嘗試
在助手
def scaffold_generation(url)
system "rails g scaffold TodoList task author"
url
end
,並鑑於
<%= button_to "Scaffold Generation", scaffold_generation(root_path), :method => :get %>
你爲什麼要這麼做?你想達到什麼目的?動態調用'rails生成腳手架'沒有多大意義。一旦運行完畢,所有內容都會被創建,並且不能再次運行該生成器。此外:是不運行遷移,並將與下一個部署被刪除... – spickermann
這只是我需要開始的事情的例子。我有一個系統,我必須創建大量的用於審計公司信息的CRUD,其中大部分將與數據完全相同,因此我將使用生成器動態準備MVC結構和一些腳本來適應/消毒視圖並添加樣式,過濾器,功能,測試和文檔,以儘量減少工作量,所以我只需要在涉及業務邏輯的時候工作,或者非常具體的工作,這將節省我大量的時間做重複的工作。 –