2013-08-28 70 views
0
調用函數

你好,現在我有一個關於button_toRuby on Rails的 - button_to使用路線從控制器

我想設置一個按鈕,在控制器調用一個方法問題,這是我怎麼設置按鈕:

(這個位於議題/ _edit.html.erb)

<%= button_to "Cancel Return", :action => "cancel_return", :controller => "issues" %> 

,我想這會調用這個函數在issues_controller.rb

def cancel_return 
    @issue.cancel_return(params) 
    end 

我還添加了它在routes.rb中

map.issue_cancel_return 'issues/cancel_return', :controller => 'issues', 
         :action => 'cancel_return' 

但它不能正常工作,我已經嘗試過申報cancel_return的是helper_method,但它也沒有工作。有沒有其他解決方案?或者我做錯了?我使用紅寶石版本1.9.3p125和rails版本2.3.15,我使用舊版本,因爲我試圖修改redmine,任何幫助將不勝感激。

感謝

+0

是問題#cancel_return有效的路線?我還沒有看到redmine的routes.rb,但你是否也有新的動作在那裏,而不是將它添加到控制器中? – roninblade

+0

@roninblade其實我並不確定如何把它放在routes.rb中,我像這樣添加它map.issue_cancel_return'issues/cancel_return',:controller =>'issues', :action =>'cancel_return' ,你也可以在編輯的問題 –

+0

中看到它,當你直接在瀏覽器上調用動作時會發生什麼?即。 http://127.0.0.1:3000/issues/cancel_return/?plus_your_extra_params – roninblade

回答

2

你應該把它們放在一個大括號這樣

<%= button_to "Cancel Return", { :controller => "issues", :action => "cancel_return"} %> 

什麼情況是,map沒有定義呼叫的方法類似GET/POST/DELETE 所以你可以做你的routes.rb文件被使用的,而不是你map

get "issues/cancel_return" => "issues#cancel_return" 

這應該可以解決你的問題。

+0

仍然沒有任何反應:(,我怎麼知道函數旁邊調用數據庫更改?是否有任何方法像php print_r(「TEXT」);退出;在RoR?只是爲了確保我的按鈕工作 –

+0

看着你的服務器日誌,這是什麼請求正在發生,什麼叫什麼,什麼不。 – dirtydexter

+0

我猜這不是所謂的最後3個動作顯示在日誌中,我點擊按鈕後處理IssuesController#顯示(爲172.16.20.1在2013-08-28 11:42:16)[GET] 參數:{「controller」 =>「issues」,「action」=>「show」,「id」=>「833」} 佈局中的渲染模板/ base 渲染問題/顯示 408ms中完成(查看:65,DB:316)| 200 OK 你知道它爲什麼不被稱爲? –