为表单的每个字段自定义更新路由 rails
Customized update route for each field of a form rails
我正在尝试单独保存表单的每个字段。但我真的很难实施它。
这是我正在尝试的代码。
users_controller.rb:
def update_name
@user = User.find(params[:id])
if @user.update_attributes(params.require(:user).permit(:name))
# Handle a successful update.
flash[:success] = "Name updated"
redirect_to edit_user_path
else
render 'edit'
end
end
def update_email
@user = User.find(params[:id])
if @user.update_attributes(params.require(:user).permit(:email))
# Handle a successful update.
flash[:success] = "Email updated"
render 'edit'
else
render 'edit'
end
end
routes.rb:
get 'users/:id/edit' => 'users#edit', :as => :edit_user
get '/users/:id' => 'users#show', :as => :user
patch 'users/:id/name'=> 'users#update_name'
patch 'users/:id/email'=> 'users#update_email'
edit.html.erb:
<%= f.button "Save", :action => "update_name" , :method => :patch, class: "btn btn-primary", id:"editAccount" %>
<%= f.button "Save", :action => "update_email" , :method => :patch, class: "btn btn-primary", id:"editAccount" %>
我可以进行正常更新,但我想单独保存字段。如何从正常更新路由(用户/:id)更改路由。
我该如何解决这个问题?谢谢
你可以用你的更新方法试试这个,我还没有添加你是如何更新密码的,所以请检查一下。
def update
if params[:user][:email].blank? and params[:user][:password].blank?
@user.update_attributes(params.require(:user).permit(:name))
flash[:success] = "Name updated"
redirect_to edit_user_path
elsif params[:user][:email].present? and params[:user][:password].present?
@user.update_attributes(params.require(:user).permit(:email))
flash[:success] = "Email updated"
render 'edit'
else
render 'edit'
end
end
我正在尝试单独保存表单的每个字段。但我真的很难实施它。
这是我正在尝试的代码。
users_controller.rb:
def update_name
@user = User.find(params[:id])
if @user.update_attributes(params.require(:user).permit(:name))
# Handle a successful update.
flash[:success] = "Name updated"
redirect_to edit_user_path
else
render 'edit'
end
end
def update_email
@user = User.find(params[:id])
if @user.update_attributes(params.require(:user).permit(:email))
# Handle a successful update.
flash[:success] = "Email updated"
render 'edit'
else
render 'edit'
end
end
routes.rb:
get 'users/:id/edit' => 'users#edit', :as => :edit_user
get '/users/:id' => 'users#show', :as => :user
patch 'users/:id/name'=> 'users#update_name'
patch 'users/:id/email'=> 'users#update_email'
edit.html.erb:
<%= f.button "Save", :action => "update_name" , :method => :patch, class: "btn btn-primary", id:"editAccount" %>
<%= f.button "Save", :action => "update_email" , :method => :patch, class: "btn btn-primary", id:"editAccount" %>
我可以进行正常更新,但我想单独保存字段。如何从正常更新路由(用户/:id)更改路由。
我该如何解决这个问题?谢谢
你可以用你的更新方法试试这个,我还没有添加你是如何更新密码的,所以请检查一下。
def update
if params[:user][:email].blank? and params[:user][:password].blank?
@user.update_attributes(params.require(:user).permit(:name))
flash[:success] = "Name updated"
redirect_to edit_user_path
elsif params[:user][:email].present? and params[:user][:password].present?
@user.update_attributes(params.require(:user).permit(:email))
flash[:success] = "Email updated"
render 'edit'
else
render 'edit'
end
end