2012-02-25 33 views
0

有什麼方法可以將表單域標記爲僅在視圖中可訪問?ROR:僅查看錶單域

我有一些'helper'字段,我與jQuery一起使用來構建和排序視圖中的某些元素。這些字段不需要傳遞給控制器​​,完全沒有鏈接到模型。

我只是想知道是否有一些屬性,我可以使用ROR表單域來標記它們已過時。

目前我只使用香草形式的字段。

回答

1

也許FormTagHelper(​​)可能會幫助你。使用這個幫助程序,您可以在表單之外創建html輸入(這樣,這些輸入字段的值將不會發送到控制器)。

+0

由於使用update_attributes方法時,您可以調用此方法並傳入你想白名單中的參數名稱,並允許通過,那就是我正在尋找的對。一個ROR替代品:) – Rumpleteaser 2012-02-25 21:52:06

1

HTML爲所有將它們排除在提交之外的表單元素提供了「禁用」屬性。使用它,或者使用javascript預先提交檢查,從表單提交中刪除屬性。

0

爲了擴展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