我正在尝试为更新我的个人资料页面创建自定义操作。它不能是常规的 users#edit 或 users#update 操作,因为只有管理员可以使用该页面。
所以这就是我在 routes.rb 中的内容(附带问题:如何使链接变为 mydomain.com/users/update_profile 而不是 mydomain.com/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
当我提交表单时,我得到这个:路由错误没有路由匹配[PUT]“/update_profile/1”
我理解错误,因为根据rake routes
update_profile 操作的输出是 GET。
所以我需要将其更改为 PUT,但我不知道如何。如何在 routes.rb 中设置自定义 PUT 操作?