我有一个 _form.html.erb 表单部分,它有助于干掉我的代码,但我需要表单具有不同的标签,具体取决于我是创建新用户还是更新现有用户。
这是我的部分表格。我不需要在更新期间显示 eula 复选框,我还需要在更新时将“创建我的帐户”提交按钮文本替换为更合适的内容。
<% form_for @user do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :name, 'Full name' %><br />
<%= f.text_field :name %>
</p>
<p>
<%= f.label :username %><br />
<%= f.text_field :username %>
</p>
<p>
<%= f.label :email, 'Email address' %><br />
<%= f.text_field :email %>
</p>
<p>
<%= f.label :password %><br />
<%= f.password_field :password %>
</p>
<p>
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %>
</p>
<p>
<%= f.check_box :eula %>
<%= f.label :eula, 'I agree to the terms and conditions' %>
</p>
<p><%= f.submit "Create my account" %></p>
<% end %>
以下哪一项是最好的方法?
如果我要执行条件形式,我将如何检查正在执行的操作?
最佳答案
ActiveRecord 有 new_record?
可以用来决定在表单上显示什么的方法:
<% form_for @user do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :name, 'Full name' %><br />
<%= f.text_field :name %>
</p>
<p>
<%= f.label :username %><br />
<%= f.text_field :username %>
</p>
<p>
<%= f.label :email, 'Email address' %><br />
<%= f.text_field :email %>
</p>
<p>
<%= f.label :password %><br />
<%= f.password_field :password %>
</p>
<p>
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %>
</p>
<% if @user.new_record? %>
<p>
<%= f.check_box :eula %>
<%= f.label :eula, 'I agree to the terms and conditions' %>
</p>
<% end %>
<p><%= f.submit @user.new_record? ? "Create my account" : "Update my account" %></p>
<% end %>
关于ruby-on-rails - 用于创建和更新的 DRY 表单部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1460769/