有条件地从rails表单中排除字段

iGb*_*nam 2 forms ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我想要实现的功能是根据用户当前所处的操作来创建不同的字段.

通用脚手架将表单捆绑为部分并在新的编辑操作中呈现它.在典型的注册情况下,可能不希望每次更新配置文件时都更新密码.我过去用来解决这个问题的一种方法是为新的编辑创建单独的表单; 包括新密码.显然,大多数领域都在重复.有没有办法保持部分但省略(从而不更新)每个动作的表单上的一些字段?

Sou*_*amy 6

我假设您正在构建用户模型的表单.所以在控制器中您将拥有

def new 
  @user = User.new 
  .....
end 

def edit
  @user = User.find(params[:id])
  ....
end 
Run Code Online (Sandbox Code Playgroud)

在形式局部使用

<% if @user.new_record? %>
 <%= f.field_type :field_name %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

在编辑/更新期间,这不会渲染字段.