[英]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
路由),包括您的perfil
和editar
操作。 顺便说一句,它们看起来像是做同样的事情:调出一个页面来提交配置文件更改,通常通过UsersController#edit
路由。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.