2017-03-06 12 views
0

我试图为编辑视图创建表单但我得到“表单中的第一个参数不能包含零或为空”。Rails 5 - 表单中的第一个参数不能包含零或为空

我对新视图与之配合类似的形式:

<%= form_for(@user, url: signup_path) do |f| %> 

我想用一个共享的形式编辑和新两个,但我不能管理检索@user使其工作。谢谢你的帮助!

视图/用户/ edit.html.erb>

<%= form_for(@user) do |f| %> 
    <%= render 'shared/error_messages' %> 

    <%= f.label :name %> 
    <%= f.text_field :name, class: 'form-control' %> 

    <%= f.label :email %> 
    <%= f.email_field :email, class: 'form-control' %> 

    <%= f.label :password %> 
    <%= f.password_field :password, class: 'form-control' %> 

     <%= f.label :password_confirmation, "Confirmation" %> 
     <%= f.password_field :password_confirmation, class: 'form-control' %> 

    <%= f.submit "Save changes", class: "btn btn-primary" %> 
    <% end %> 

users_controller.rb>

def update 
    @user = User.find(params[:id]) 
    if @user.update_attributes(user_params) 
     flash[:success] = "Profile updated" 
     redirect_to @user 
    else 
     flash.now[:danger] = 'There was an error updating your account, try again' 
     render 'edit' 
    end 
    end 

的routes.rb>

Rails.application.routes.draw do 
    root 'static_pages#home' 
    get '/about', to: 'static_pages#about' 
    get '/contact', to: 'static_pages#contact' 
    get '/signup', to: 'users#new' 
    post '/signup', to: 'users#create' 
    get '/login', to: 'sessions#new' 
    post '/login', to: 'sessions#create' 
    delete '/logout', to: 'sessions#destroy' 
    resources :users 
end 

回答

3

形式是对edit动作,而不是update

因此,你需要添加edit动作,从中@user实例变量将采取:

def edit 
    @user = User.find(params[:id]) 
end 
相关问题