【发布时间】:2013-12-13 05:50:51
【问题描述】:
每当我单击表单中的更新按钮时,它都会重定向到/users/new.1,从而引发错误Couldn't find User with id=new。请帮忙!
user_controller.rb
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.update_attributes(user_params)
redirect_to @user
else
render "edit"
end
end
private
def user_params
params.require(:user).permit(:id, :name, :password, :password_confirmation, :email, :password_salt, :password_hash, :phone)
end
edit.html.erb
<%= form_for @user, url: user_path(@user), method: :patch do |f| %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %><br />
<%= f.label :mobile %><br />
<%= f.text_field :phone %><br />
<%= f.label :email %><br />
<%= f.text_field :email %><br />
<%= f.label :role %><br />
<%= f.text_field :role %><br />
<p class="button"><%= f.submit "Update"%></p>
<% end %>
routes.rb
get "logout" => "pages#destroy", :as => "logout"
get 'welcome/index'
get 'users/new', :as => 'user'
root :to => 'welcome#index'
resources :users
【问题讨论】:
-
能否请您查看您的 routes.rb 文件,尤其是您为用户定义资源的地方?
-
是的,当然。我已经编辑了我的问题。
-
您不应该需要 get
'users/new', :as => 'user'行,因为resources :users处理该路线。这可能是你的问题。 -
谢谢,它解决了我的问题。
-
您需要在控制器编辑方法中为该字段设置默认值。
标签: ruby-on-rails activerecord