Rails 5-第一个形式的第一个参数不能包含零或空的



我正在尝试为编辑视图创建一个表单,但是我得到了"第一个参数不包含nil或空为空"。

我对 new View 有类似的形式,可用于:

<%= 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

表单在edit操作上,而不是update

因此,您需要添加edit操作,从中获取@user实例变量:

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

最新更新