将变量传递给text_field而不更改表单

时间:2012-10-09 06:25:56

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

我有_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两周,所以请帮助我。

1 个答案:

答案 0 :(得分:0)

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

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

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}

这将调用辅助方法并返回&#34; 禁用=&#39;禁用&#39; &#34;取决于控制器和动作