代码之家  ›  专栏  ›  技术社区  ›  Ryan

在形式上,model和@model的区别是什么?

  •  6
  • Ryan  · 技术社区  · 16 年前

    以下方式使用“表格”有什么区别:

    <% form_for @user do |f| %>
       <%= f.label :name %>:
       <%= f.text_field :name, :size => 40 %>
       ...
    <% end %>
    

    还有:

    <% form_for :user, :url => {:action => 'create'} do |f| %>
       <%= f.label :name %>:
       <%= f.text_field :name, :size => 40 %>
       ...
    <% end %>
    

    使用@user是否只会自动将CRUD方法用于URL操作?

    2 回复  |  直到 16 年前
        1
  •  4
  •   Tomas Markauskas    16 年前

    如果你给 form_for 没有实例变量的符号,它查找具有相同名称的实例变量。

    文件上说:

    例如,如果@post是现有的 要编辑的记录

    <% form_for @post do |f| %>
      ... 
    <% end %>
    

    相当于:

    <% form_for :post, @post, :url => post_path(@post), :html => { :method => :put, :class => "edit_post", :id => "edit_post_45" } do |f| %>
      ...
    <% end %>
    
        2
  •  7
  •   Pär Wieslander    16 年前

    如果你只是给一个模型实例 @user 在不指定操作的情况下(如第一个示例中所示),Rails会自动为表单使用适当的CRUD操作:

    • 如果 @用户 是新的,未保存的 User 对象,窗体将指向 create 行动。

    • 如果 @用户 是存在的 用户 从数据库加载, update 将改用操作。

    这样做的好处是,您可以将同一表单用于 edit new 视图而不更改 :url 窗体的参数。

    像往常一样, API docs 提供更多信息。