有没有办法可以将表单字段标记为只能在视图中访问?
我有一些'helper'字段,我与jQuery一起使用来构建和命令视图中的某些元素。这些字段不需要传递给控制器,也不会链接到模型。
我只是想知道是否有一些属性我可以使用ROR表单字段将它们标记为过时。
目前我只使用香草表格字段。
答案 0 :(得分:1)
也许FormTagHelper
(doc)可能会对您有所帮助。使用此帮助程序,您可以在表单外部创建html输入(这样,这些输入字段的值将不会发送到控制器)。
答案 1 :(得分:1)
HTML为所有表单元素提供“禁用”属性,将其从提交中排除。使用它,或使用javascript进行预提交检查,从表单提交中删除属性。
答案 2 :(得分: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防止此最终用户分配。您可以调用此方法并传递参数名称想要白名单,并允许在使用update_attributes时通过:
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