从表单中提交的表单到数据返回控制器之前会发生什么?

时间:2013-05-31 16:57:51

标签: ruby-on-rails-3 forms

这个问题在访谈期间多次出现,我在谷歌上找不到答案。我认为我在搜索时使用了错误的术语。

1 个答案:

答案 0 :(得分:1)

对于statrters,这是MVC Architecture。可能已经看过它,但基本上作为应用程序的用户。在视图中提交回控制器的数据的一个很好的例子是当用户尝试创建新用户时。首先,您可能会有一个<%= link_to 'Create New User', new_user_path %>这会向请求控制器发送一个请求,并在new上调用user_controller操作,然后它会呈现app/users/new.html.erb,其中包含一个form_for块将呈现部分,在大多数情况下将为:render :partial => 'form'。从呈现表单并输入相关信息当用户提交表单时,表单和数据连同表单一起提交,并且发出POST请求,在这种情况下很可能是/users。这被映射到UsersController中的create action ,因为Rails使用约定优于配置的原则。

def create
    @title = 'Create a user'
    @user = User.new(params[:user])

    if @user.save
      UserMailer.registration_confirmation(@user).deliver
      redirect_to usermanagement_path
      flash[:success] = 'Created successfully.'
    else
      @title = 'Create a user'
      render 'new'
    end
  end

在上面的示例中,发生的情况是,当调用新操作并提交表单时,它会将新用户传入params,此时它将尝试保存用户。我添加了一个邮件程序,以便在创建特定用户时收到确认电子邮件。如果表单未提交,则会继续呈现'new'操作。

希望这可以解决问题