繁体   English   中英

无法以表格形式显示用户数据,得到未定义的方法“ user_path”(使用devise和simple_form)

[英]Not able to show user data in form, getting undefined method `user_path' (Using devise and simple_form)

我正在尝试通过表单显示来自用户的数据,以便他可以编辑任何字段。 我为此使用了simple_form,并设计用于身份验证。 我不断收到undefined method user_path错误。

这是我的控制器

class HomeController < ApplicationController
 before_filter :authenticate_user!
 def index
 #Mostramos menu de opciones
 end

 def perfil
   @user = User.find(current_user.id)
 end

 def editar
   @user = User.find(current_user.id)
 end

结束

perfil.html.erb的视图

<h1>showing user data</h1>
<%= simple_form_for @user do |f| %>
  <%= f.input :nombre %>
  <%= f.input :username %>
  <%= f.input :rut %>
  <%= f.input :ciudad %>
  <%= f.input :direccion %>
  <%= f.input :groupId %>
  <%= f.button :submit %>
<% end %>

<%= link_to "Editar datos", :action => :editar %>
<br>
<%= link_to "Volver", :action => :index %>

和我的路线文件

devise_for :users
match "perfil" => "home#perfil"
match "editar" => "home#editar"

在视图<%= simple_form_for @user do |f| %> ,此行附近有错误<%= simple_form_for @user do |f| %> <%= simple_form_for @user do |f| %>我一直在寻找有关我做错了什么的指南或见解(我几乎可以肯定,routes.rb中做得不好或缺少什么)。 任何见解将不胜感激。

按照以下步骤更改路线,然后尝试,

    devise_for :users
    match "perfil" => "home#perfil", :as => :user
    match "editar" => "home#editar", :as => :user

:as参数告诉路由器将路由命名为什么(然后,可以将_path_url添加到任何:as参数中)。

另外, link_to user.email, user您直接链接到ActiveRecord模型(例如, link_to user.email, user )时,它将尝试将user转换为user_path

<%= simple_form_for @user do |f| %>

这将根据上下文发布到users_controller控制器和动作的表单中。 devise_for :users不会为您生成该控制器,而是可以使用registrations_controller ,实际上,您无需创建编辑表单,URL users/edit已经有一个可供当前用户使用。

要自定义默认模板,请运行rails generate devise:views并查看app/views/devise

如果@user是现有用户,则

<%= simple_form_for @user do |f| %>

使用PUT / PATCH http请求类型将表单发布到user_path(@user)。 请注意,您需要创建此路由。 从您的代码尚不清楚此更新操作在哪里,但是如果您使用的是资源丰富的模式,则:

resources :users

处理它(通过UsersController#edit路由),包括您的perfileditar操作。 顺便说一句,它们看起来像是做同样的事情:调出一个页面来提交配置文件更改,通常通过UsersController#edit路由。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM