0
我在其中一個應用中使用了submit_tag
表單助手。這個提交按鈕的值應該動態改變。這個提交按鈕的兩個可能值是Save
和Update
。所以,在我看來,我做了如下的事情:params散列提交選項的錯誤值
<% temp = 0 %>
<% text = '' %>
<% temp = ActivityLog.find_by_sql("SELECT COUNT(id) AS cnt FROM logs WHERE id > 0")%>
<% text = temp[0][:count].to_i > 0 ? 'Update' : 'Save' %>
<!-- other html contents -->
<%= submit_tag text, :id=>"submitBtn"+i.to_s, :onclick=>"submit_button_clicked(this)"%>
現在,當我在瀏覽器中運行視圖時,可以看到預期的效果。但軌道控制器接收到params
散列中的commit
選項的錯誤值。
例如,當text
的價值進行評估,以Save
,我得到在Firebug的下列內容:
<input type="submit" value="Save" style="" onclick="submit_button_clicked(this)" name="commit" id="submitBtn3">
在相關的控制器
但raise params.inspect
顯示了follwing:
{"commit"=>"Update",
"authenticity_token"=>"",
"time"=>{"292"=>"3.0",
"2"=>"1.0",
"456"=>"4.0"},
"date"=>"2011-09-20"}
見雖然提交按鈕的值在HTML中顯示爲Save
,但軌道控制器將commit
的值顯示爲Update
。這裏有什麼問題?
如果您需要覆蓋默認值,請使用**@activity_log.new_record?**來檢測它是否創建**或**更新** – Anatoly
其實,我是試圖通過Ajax提交表單。所以我使用了'form_remote_tag','submit_tag'是該異步表單的一部分。我需要它是Ajax,所以我不能在這裏使用'form_for'。 (並且我在這裏保留了一些遺留代碼,並且無法真正弄清楚在視圖中不使用SQL的方式......但是我會盡我所能將它移出控制器。) – rstarter
if你需要更新按鈕文本,有2種方法:在一個局部換行按鈕並檢查** new_record?**,第二種方式是使用ajax回調和更新按鈕'在客戶端用回調文本 – Anatoly