使用“新”表单进行数据库更改

时间:2013-07-11 20:06:21

标签: ruby-on-rails-3 forms

我有一位用户,希望能够休假休假。我的观点如下:

<h2>Request Days Off</h2>

<%= form_for(@user, :as => :user, :url => vacation_days_path) do |f| %> 

  <div><%= f.label "How many vacation days would you like to take?" %>
  <%= f.number_field :vacation_days %></div>  

  <div><%= f.submit "Submit" %></div>

<% end %>

在我的控制器中,我有新的和创建方法。在我在互联网上看到的“创建”方法的所有示例中,都有一行类似于

的代码
 @person = User.new(user_params)   or whatever

我的问题是我没有vacation_days模型。只有一个控制器。我想编辑用户数据库,但创建新用户不是答案(对吧?)。

如何创建有效的创建方法?

2 个答案:

答案 0 :(得分:2)

这不是真正的RESTful ...但是,如果你想更新现有用户,你可以这样做

@user = User.find(params[:id])
@user.update_attributes(params[:user])

其中params[:id]将包含您要更新的用户的ID,params[:user]将包含您要更新的属性。

由于您将form_for(@user)与其表单构建器一起使用,因此应该没问题。

答案 1 :(得分:1)

在我看来,您在休假日需要单独的控制器。只需拥有一个vacation_days / edit视图,其中包含您的表单,并将其提交给用户/更新。

为清楚起见,您的操作应该是编辑和更新您的用户,而不是“创建”用户。因此,更新用户的控制器操作应该包含以下行:

@user.update_attributes(params[:user])