我創建了一個帶有參數的耙子任務。我可以使用rake my_task["args"]
在命令行中運行這個rake任務。使用表格運行耙子任務
我現在試圖創建一個帶有文本框和按鈕的窗體。單擊按鈕時,應該使用文本字段的內容作爲任務的參數運行rake任務。
我怎樣才能得到一個軌道形式(form_tag我相信,它不涉及任何資源)以這種方式行事,我怎樣才能在按鈕點擊運行rake任務?
我不確定發生了什麼,所以如果你能指定指令的位置,那對我來說將是一個巨大的幫助。
我創建了一個帶有參數的耙子任務。我可以使用rake my_task["args"]
在命令行中運行這個rake任務。使用表格運行耙子任務
我現在試圖創建一個帶有文本框和按鈕的窗體。單擊按鈕時,應該使用文本字段的內容作爲任務的參數運行rake任務。
我怎樣才能得到一個軌道形式(form_tag我相信,它不涉及任何資源)以這種方式行事,我怎樣才能在按鈕點擊運行rake任務?
我不確定發生了什麼,所以如果你能指定指令的位置,那對我來說將是一個巨大的幫助。
一個rake任務是一個服務器腳本,所以你需要遵循的模式看起來像。
1)用戶請求,有一個文本框和提交按鈕的表單(控制器#新)
2)用戶點擊窗體上提交其發出請求到Rails應用程序(控制器#創建)
3)控制器動作程序會使用「系統」方法rake任務,並通過從表單參數傳遞:
class MyController < ApplicationController
def new
end
def create
system "rake my_task", params[:args]
end
end
在新的視圖中,您將使用的form_tag創建表格,對於text_field_tag您參數,併爲您的按鈕submit_tag這樣
<%= form_tag my_rake_task_path, :method => 'post' do %>
<%= text_field_tag :args %>
<%= submit_tag "Run Task" %>
<% end %>
如果你仔細觀察,你會看到表單標籤使用一種稱爲my_rake_task_path方法。這是一個命名的路線幫手。要創建你必須條目添加到你的路由文件中像
get 'rake_task', to: 'mycontroller#new'
post 'rake_task', to: 'mycontroller#create', :as => 'my_rake_task'
如果你想知道更多關於你的控制器運行rake任務看看這個railscast http://railscasts.com/episodes/127-rake-in-background
完美,正是我一直在尋找對於。 – hugh 2013-04-10 16:37:57