ROR:仅查看表单字段

时间:2012-02-25 21:28:19

标签: ruby-on-rails ruby-on-rails-3 forms

有没有办法可以将表单字段标记为只能在视图中访问?

我有一些'helper'字段,我与jQuery一起使用来构建和命令视图中的某些元素。这些字段不需要传递给控制器​​,也不会链接到模型。

我只是想知道是否有一些属性我可以使用ROR表单字段将它们标记为过时。

目前我只使用香草表格字段。

3 个答案:

答案 0 :(得分:1)

也许FormTagHelperdoc)可能会对您有所帮助。使用此帮助程序,您可以在表单外部创建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