有什麼方法可以將表單域標記爲僅在視圖中可訪問?ROR:僅查看錶單域
我有一些'helper'字段,我與jQuery一起使用來構建和排序視圖中的某些元素。這些字段不需要傳遞給控制器,完全沒有鏈接到模型。
我只是想知道是否有一些屬性,我可以使用ROR表單域來標記它們已過時。
目前我只使用香草形式的字段。
有什麼方法可以將表單域標記爲僅在視圖中可訪問?ROR:僅查看錶單域
我有一些'helper'字段,我與jQuery一起使用來構建和排序視圖中的某些元素。這些字段不需要傳遞給控制器,完全沒有鏈接到模型。
我只是想知道是否有一些屬性,我可以使用ROR表單域來標記它們已過時。
目前我只使用香草形式的字段。
也許FormTagHelper
()可能會幫助你。使用這個幫助程序,您可以在表單之外創建html輸入(這樣,這些輸入字段的值將不會發送到控制器)。
HTML爲所有將它們排除在提交之外的表單元素提供了「禁用」屬性。使用它,或者使用javascript預先提交檢查,從表單提交中刪除屬性。
爲了擴展Archit Baweja的答案,禁用BUTTON,INPUT,OPTGROUP,OPTION,SELECT和TEXTAREA標籤不會隨窗體一起提交。有關禁用的元素的更多信息可以在這裏找到:http://www.w3.org/TR/html4/interact/forms.html#h-17.12
此外,如果您有任何安全擔心這些輸入在控制器通過「upodate_attributes(params)質量分配,那麼你可以防止這個最終用戶分配使用attr_accessible 。
class AccountsController < ApplicationController
include ActiveModel::MassAssignmentSecurity
attr_accessible :first_name, :last_name
attr_accessible :first_name, :last_name, :plan_id, :as => :admin
def update
...
@account.update_attributes(account_params)
...
end
protected
def account_params
role = admin ? :admin : :default
sanitize_for_mass_assignment(params[:account], role)
end
end
的MassAssignmentSecurity模塊
的更多信息可以在這裏找到:http://api.rubyonrails.org/classes/ActiveModel/MassAssignmentSecurity/ClassMethods.html
由於使用update_attributes方法時,您可以調用此方法並傳入你想白名單中的參數名稱,並允許通過,那就是我正在尋找的對。一個ROR替代品:) – Rumpleteaser 2012-02-25 21:52:06