Ruby on rails - 无法在表单中显示用户数据,获取未定义的方法"user_path"(使用设计和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| %>中的这条线附近我一直在寻找关于我做错了什么的指南或见解(我几乎可以肯定是routes.rb中做得不好或遗漏了什么)。任何见解都将不胜感激。

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

这将发布到users_controller控制器的表单中,并根据上下文执行操作。devise_for :users不会为您生成该控制器,相反,您有registrations_controller可用,事实上,您不需要创建编辑表单,在url users/edit中已经有一个可用于当前用户。

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

按照以下方式更改路线并尝试,

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

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

此外,任何时候直接链接到ActiveRecord模型(例如link_to user.email, user),它都会尝试将user转换为user_path

如果@user是现有用户,则

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

使用PUT/PATCH http请求类型将表单发布到user_path(@user)。请注意,您需要创建此路由。从你的代码中还不清楚这个更新操作在哪里,但如果你使用了一个足智多谋的模式,那么:

resources :users

处理它(通过UsersController#edit路由),包括您的perfileditar操作。顺便说一句,他们看起来也一样:打开一个页面提交配置文件更改,通常通过UsersController#edit进行路由。

相关内容

  • 没有找到相关文章

最新更新