2010-01-04 59 views
11

在新服務器上重新安裝Rails應用程序。部分應用程序可以根據用戶選擇的按鈕在兩個方向中的某一方向進行分叉。這部分不起作用,並且當我查看日誌時,我看到了我給出的表單的值,外,其餘部分爲params散列的commit部分。這似乎是應用程序無法按預期工作的原因(因爲params[:commit]中沒有任何內容,但我不知道爲什麼提交不會傳入;請求肯定是POST請求,並且所有其他參數都在那裏。Rails未通過「提交」按鈕參數

+0

您是否找到了解決方案?自從我使用我的網頁設計師更新我的模板後,我遇到了類似的問題。使用'基本'模板,全部是文件,但使用設計器(HTML有效)模板,我沒有提交提交值。 – 2010-01-05 12:13:47

+3

在我的情況下,這是因爲實際提交表單之前有一個jQuery彈出窗口。 – 2010-01-05 14:04:49

+2

感謝您的評論韋恩,這讓我感到這是爲什麼造成我的。就我而言,我們有一個通用的jQuery提交事件綁定,它禁用了提交按鈕(以避免雙重提交)。從這個表格中刪除固定的東西。 – chrisrbailey 2010-01-28 22:46:41

回答

7

曾與禁用按鈕上提交特徵的simular問題。在提交表單之前,我們通過添加具有相同名稱和值的隱藏輸入字段來解決此問題。

function disableButtonAndSubmit() 
{ 
    var input = $("<input type='hidden' />").attr("name", $(this)[0].name).attr("value", $(this)[0].value); 
    $(this).closest('form').append(input); 
    $(this).attr('disabled', 'disabled').html('Loading…'); 
    $(this).closest('form').submit(); 
} 

$('#somewhere button').click(disableButtonAndSubmit); 
0

我之前看過類似這樣的東西,在不同的瀏覽器如何通過表單上的提交按鈕的值不一致的情況下,我發現唯一實用的解決方案是在按鈕中設置javascript以設置隱藏字段,並使用該值,而不是

下面是我的一些代碼到一個區分保存並退出,肚裏的一種方式,並保存並繼續哪去了另一個:

<%= hidden_field_tag 'step_commit', '' %> 
    <span style="float:left;"> 
    <%=submit_tag 'Cancel', :name=>'cancel', :onclick=>"javascript:location.href='/';return false;" %> 
    <%=submit_tag 'Save and Exit', :name=>'exit', :onclick=>"javascript:$('step_commit').value='exit';" %> 
    </span> 
    <span style="float:right;"> 
    <%=submit_tag 'Save and Continue', :name=>'continue', :onclick=>"javascript:$('step_commit').value='continue';" %> 
    </span> 
+0

奇怪的是它在舊的服務器上工作正常,但我們現在只是將它移動並停止。 – 2010-01-04 16:29:38

1

檢查您的提交輸入是否被命名爲提交,或者它的標籤將不會被髮送。

生成的HTML應該是:

<input type="submit" name="commit" label="...> 
2

我遇到了同樣的問題,這裏的答案指出我正確的方向。但是,並非建議添加隱藏表單輸入或放棄雙重提交塊,您可以簡單地在雙提交塊中添加一個setTimeout函數,超時時間爲1毫秒,這使得雙提交塊可以在不阻止的情況下工作提交按鈕。

+0

這只是我需要的解決方案。謝謝! – 2015-01-05 23:15:37

5

只需添加name: "commit", value: "Save"到您的表單提交按鈕:

form_for @object do |f| 
    ... 
    f.button :submit, "Save", name: "commit", value:"Save" 
end 

,然後你將有params[:commit]等於"Save"在控制器中。