2013-04-10 89 views
1

我創建了一個帶有參數的耙子任務。我可以使用rake my_task["args"]在命令行中運行這個rake任務。使用表格運行耙子任務

我現在試圖創建一個帶有文本框和按鈕的窗體。單擊按鈕時,應該使用文本字段的內容作爲任務的參數運行rake任務。

我怎樣才能得到一個軌道形式(form_tag我相信,它不涉及任何資源)以這種方式行事,我怎樣才能在按鈕點擊運行rake任務?

我不確定發生了什麼,所以如果你能指定指令的位置,那對我來說將是一個巨大的幫助。

回答

3

一個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

+0

完美,正是我一直在尋找對於。 – hugh 2013-04-10 16:37:57