【问题标题】:Rails not editable text fieldRails 不可编辑的文本字段
【发布时间】:2011-08-02 23:17:41
【问题描述】:

我有一个form_for,格式如下:

<div class="field">
    <%= location.label :city %>
    <%= location.text_field :city, :disabled=>true%>
</div>
<div class="field">
    <%= location.label :country %>
    <%= location.text_field :country, :disabled=>true%>
</div>

您可以看到 2 个文本字段被禁用,因为它们是由 jquery 函数自动填充的,我不想让用户处理它们。 问题是,通过这种方式,视图不会将该参数传递给控制器​​,因为它被禁用了!!! 有没有其他方法可以将不可编辑的 text_field 传递给控制器​​,注意我不想使用隐藏字段,因为我想在文本框中向用户显示结果

TNX

【问题讨论】:

  • 在提交之前你不启用带有 jquery 的字段吗?
  • 我正在做......你不知道是否有更清洁的方法吗?

标签: ruby-on-rails textfield form-for


【解决方案1】:

将其设为只读!

<%= location.text_field :country,:readonly => true%>

【讨论】:

  • 看准这个。 W3 specification for forms 区分 disabledread-only 并明确表示禁用的输入不应与表单数据一起提交。
  • 谢谢!我可能会再花半个小时弄清楚为什么:disabled =&gt; true 没有提交我的字段。
  • 但是如果我希望在Create 操作上可以访问此字段怎么办?
  • 但是使用这种方法,任何人都可以在提交前进行编辑。这不是很脆弱吗?
  • 是的,这很容易受到攻击。用户可以使用他的浏览器“开发者工具”(按 F12)删除input 标签的readonly="readonly" 属性,并根据需要编辑文本字段。如果您确实需要确保安全,请完全删除输入字段或在模型中验证表单输入。无论如何,这是一个非常有用的答案。
【解决方案2】:

诀窍是将“对象”与标签一起用于您不想更改的任何内容。以下是你应该如何编码:

<%= location.label(:country, f.object.country) %>

【讨论】:

    猜你喜欢
    • 2011-05-26
    • 1970-01-01
    • 2021-10-10
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 2023-03-05
    相关资源
    最近更新 更多