0

我参与过许多项目,在这些项目中我看到了 HTML 表单中新对象的属性设置以及调用时Model.new(foo: 'bar')

以“最佳实践”的方式这样做的正确方法是什么?

形式:

<%= form_for User.new, remote: true do |f| %>
  <%= f.hidden_field :foo, value: "bar" %>
  <%= f.text_field :email %>
<% end %>

实例变量:

#Obviously this is set in the Controller    
@user = User.new(foo: "bar")

<%= form_for @user, remote: true do |f| %>
  <%= f.text_field :email %>
<% end %>
4

2 回答 2

1

At first case, when validation of user is not passed, empty form will be rendered, at second case form with filled fields will be rendered. It's because instance variable @user at controller will keep entered values.

So I recommend you to use second variant.

于 2013-08-07T13:43:04.210 回答
0

我更喜欢这种形式是局部的。这样,您就不会重复新建和编辑。

_form.html.erb

<%= form_for user, remote: true do |f| %>
  <%= f.text_field :email %>
<% end %>

这使您可以发送要呈现它的用户。

所以在 new.html.erb

<%= render partial: 'form', locals: {user: @user} %>

但这一切都归结为控制器:

def new
  @user = User.new
end

def edit
  @user = User.find(params[:id])
end
于 2013-08-07T13:44:48.437 回答