1

休暇を取得して仕事を休みたいと考えているユーザーがいます。私の見解は次のようになります。

<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 %>

私のコントローラーには、 new メソッドと create メソッドがあります。私がインターネットで見る「作成」メソッドのすべての例には、次のようなコード行があります。

 @person = User.new(user_params)   or whatever

私の問題は、vacation_days モデルがないことです。コントローラーのみです。ユーザー データベースを編集したいのですが、新しいユーザーを作成するだけでは解決できません (そうですか?)。

機能する create メソッドを作成するにはどうすればよいですか?

4

2 に答える 2

2

これは実際にはRESTfulではありません...ただし、既存のユーザーを更新したい場合は、次のようにすることができます

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

where にparams[:id]は、更新するユーザーの ID が保持され、更新params[:user]する属性が保持されます。

フォームビルダーで使っform_for(@user)ているので問題ないはずです。

于 2013-07-11T20:10:04.300 に答える
1

休暇のために別のコントローラーが必要になるとは思えません。フォームを含むvacation_days/editビューを作成し、ユーザーに送信/更新します。

明確にするために、アクションはユーザーを「作成」するのではなく、編集および更新する必要があります。したがって、ユーザーを更新するためのコントローラー アクションには、次の行が必要です。

@user.update_attributes(params[:user])
于 2013-07-11T20:11:27.620 に答える