【问题标题】:how to remove prefix path in routes.rb如何删除 routes.rb 中的前缀路径
【发布时间】:2014-11-25 10:52:54
【问题描述】:

我正在尝试使用 active 和 neo4j 模型创建一个应用程序,并且我想将以下内容用于我的 neo4j 模型:

module Neo
  class Usernode
    include Neo4j::ActiveNode
    property :first_name, type: String
    property :last_name, type: String
    property :address, type: String
  end
end

并在我的控制器中使用它们,如下所示:

class UsernodesController < ApplicationController

  def index
    @usernodes = Neo::Usernode.all
  end

在我的 routes.db 文件中,我有以下路线:

  Rails.application.routes.draw do
      resources :usernodes, path: '/usernodes'
    end

这样做的问题是它只生成带有'/neo/usernodes/' 的路由,而我只想使用带有'/usernodes/' 的路由。

是否可以只生产'/usernodes/'?如果是,我该怎么做?

如果我在 routes.db 中使用:

resources :usernodes, path: '/usernodes'

我收到以下错误:

Processing by UsernodesController#new as HTML
Rendered usernodes/_form.html.erb (12.2ms)   
Rendered usernodes/new.html.erb within layouts/application (12.7ms)
Completed 500 Internal Server Error in 15ms 
ActionView::Template::Error (undefined method 'neo_usernodes_path' for
#<#<Class:0x0000000788e968>:0x000000089f3c08>):
    1: <%= form_for(@usernode) do |f| %>
    2:   <% if @usernode.errors.any? %>
    3:     <div id="error_explanation">
    4:       <h2><%= pluralize(@usernode.errors.count, "error") %> prohibited this usernode from being saved:</h2>

这是我的路线:

 Prefix Verb   URI Pattern                   Controller#Action
        users GET    /users(.:format)              users#index
              POST   /users(.:format)              users#create
     new_user GET    /users/new(.:format)          users#new
    edit_user GET    /users/:id/edit(.:format)     users#edit
         user GET    /users/:id(.:format)          users#show
              PATCH  /users/:id(.:format)          users#update
              PUT    /users/:id(.:format)          users#update
              DELETE /users/:id(.:format)          users#destroy
    usernodes GET    /usernodes(.:format)          usernodes#index
              POST   /usernodes(.:format)          usernodes#create
 new_usernode GET    /usernodes/new(.:format)      usernodes#new
edit_usernode GET    /usernodes/:id/edit(.:format) usernodes#edit
     usernode GET    /usernodes/:id(.:format)      usernodes#show
              PATCH  /usernodes/:id(.:format)      usernodes#update
              PUT    /usernodes/:id(.:format)      usernodes#update
              DELETE /usernodes/:id(.:format)      usernodes#destroy

【问题讨论】:

  • 那条路线不是被namespace :neo块包围了吗?
  • 不是neo_usernodes_path,正如您在路由助手中看到的那样,new_usernode_path 用于new 操作,usernodes_path 用于index 操作
  • 它可能拼写错误,但我似乎找不到它。无论如何谢谢你们的帮助:)
  • @JamesRamsfield 你添加module 选项还是使用我的方法(修复_path 助手)?我只是想了解问题出在哪里。
  • 你找不到它,因为 Rails 默认把它放在&lt;%= form_for(@usernode) do |f| %&gt;,我称之为愚蠢的 Rails 魔法。将表单修复为&lt;%= form_for(@usernode, url: new_usernode_path) do |f| %&gt;

标签: ruby-on-rails neo4j neo4j.rb


【解决方案1】:

请尝试以下:

resources :usernodes, module: 'neo', path: 'usernodes'

【讨论】:

  • 好吧,那么我得到以下问题:undefined method neo_usernodes_path for #&lt;#&lt;Class:0x0000000788e968&gt;:0x000000089f3c08&gt;
  • @JamesRamsfield 请发布内容routes.rb 并输出bundle exec rake routes
  • 我已经更新了我的问题,因为我在这个小评论中做得不好。
  • 请在您的路线中加入模块。 '资源:usernodes,模块:'neo',路径:'usernodes''
  • 然后我得到一个不同的错误:未初始化的常量 Neo::UsernodesController
猜你喜欢
  • 2015-08-12
  • 2012-01-31
  • 1970-01-01
  • 2014-01-04
  • 1970-01-01
  • 2016-01-18
  • 1970-01-01
  • 1970-01-01
  • 2022-07-26
相关资源
最近更新 更多