Update My Profile Page のカスタム アクションを作成しようとしています。管理者のみがそのページを使用できるため、通常の users#edit または users#update アクションにすることはできません。
これがroutes.rbにあるものです(副次的な質問:リンクをmydomain.com/update_profileではなくmydomain.com/users/update_profileにするにはどうすればよいですか?
get 'update_profile/:id' => "users#update_profile", :as => 'update_profile'
_form.html.erb
<%= form_for @user, :url => update_profile_path(@user) do |f| %>
<%= render :partial => "form", :locals => {:f => f} %>
<% end %>
users_controller.rb
def update_profile
@user = User.find(params[:id])
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to @user, notice: 'User was successfully updated.' }
else
format.html { render action: "edit" }
end
end
end
フォームを送信すると、次のようになります: Routing Error No route matches [PUT] "/update_profile/1"
rake routes
update_profile アクションの出力によると GET であるため、エラーを理解しています。
だから私はそれをPUTに変更する必要がありますが、方法がわかりません。routes.rb でカスタム PUT アクションを設定するにはどうすればよいですか?