【问题标题】:Pass a variable to text_field without changing form将变量传递给 text_field 而不更改表单
【发布时间】:2012-10-09 06:25:56
【问题描述】:

我有 _form.html.erb

<%= f.label :name %>
<%= f.text_field :name %>

<%= f.label :password %>
<%= f.password_field :password %>

现在如果我在主页中呈现这个表单,HTML 代码应该是:

<label for="session_name">Name</label>
<input id="session_name" name="session[name]" size="30" type="text">
...

如果我将 _form.html.erb 更改为:

<%= f.label :name %>
<%= f.text_field :name, disabled: true %>
...

HTML 代码应该是:

...
<input disabled="disabled" id="session_name" name="session[name]" size="30" type="text">
...

但是,我不想更改我的 _form.html.erb,那么如何将 disabled: true 传递到我的表单中?我尝试使用render partial:,但不知道语法。

我刚刚学习 Ruby on Rails 2 周,所以请帮助我。

【问题讨论】:

  • 我不明白你不能做什么。原始问题很简单,更好地解释你的约束

标签: ruby-on-rails-3 form-helpers


【解决方案1】:

我不知道你为什么不这样做,但你可以通过这种方法解决问题。尝试做-

在应用程序助手中,添加方法 -

def add_disabled
  #i suppose that u want the field to be disabled in the users controller for edit action but not for other controllers or actions
  return "disabled='disabled'" if params[:controller] == "users" and params[:action] == "edit"
end

在_form.html.haml中

= f.text_field :name, #{add_disabled}

这将调用辅助方法并根据控制器和操作返回“disabled='disabled'

【讨论】:

  • 谢谢。这正是我想要做的,在编辑操作中禁用名称字段。顺便说一句,渲染是否有空间:可以吗?
  • 任何辅助方法也将从部分调用。此外,辅助方法名称在所有辅助方法中都应该是唯一的。因此,如果您希望在不同控制器的不同操作中使用此功能,请在应用程序帮助器中添加帮助器方法。
  • 只是为了让它在我的应用程序中工作,add_disabled 方法:return { disabled: true } 和 _form.html.erb:= f.text_field :name, add_disabled
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-11
  • 2021-02-07
  • 2018-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多