2011-10-17 89 views
0

我想用lambda作爲一個參數的link_to下面的代碼:edit.html.erb如何通過一個lambda來LINK_TO

<h2>Edit customer info</h2> 

<%= render 'form' %> 

<%= link_to(@return_to) do %> 
    Back 
    step_back() 
<% end %> 

這裏是step_back的DEF:

#return link for previous page in page step 
    def step_back 
    session[:page_step] -= 1 
    end 

上述代碼的問題在於,只要加載edit.html.erb就會執行step_back()。實際上,只有當用戶點擊後退鏈接時才能執行後退。我認爲只有拉姆達可以實現這一點。

有什麼想法?因爲你用會話交互

+2

客戶端代碼== JavaScript的 – apneadiving 2011-10-17 13:49:28

回答

0

你的選擇是有限的。

你從哪裏得到那個@return_to;調用獲取相同數據並重定向到其的操作可能最容易,並執行相同的會話操作。

+0

我試圖避免再培訓局裝車後立即執行。執行應該只發生在用戶點擊後退鏈接時。有關如何記錄觀看歷史記錄併爲應用程序提供返回/取消的建議? Rails:使用編輯等操作無法正常工作。 – user938363 2011-10-17 13:55:30

+0

@ user938363我明白你想要做什麼,我給瞭解決方案 - 如果你想上的鏈接的點擊執行服務器端的代碼,那麼你就需要實際調用服務器上的鏈接的點擊然後做。當事情得到執行時,你現在正在混淆。 – 2011-10-17 14:04:05

+0

「你需要實際上通過點擊鏈接調用服務器,然後執行」。請詳細說明。 – user938363 2011-10-17 14:49:44

0

查看關於在JavaScript編寫step_back()函數,並將其連接到一個onClick HTML屬性上的標籤,而不是使用的link_to軌幫手

然後還.preventDefault()JavaScript的事件,如果你不」不想鏈接到任何地方去,或者「#」

這將允許代碼的頁面送達前的資產編譯期間執行的在瀏覽器中單擊事件,而不是。