【发布时间】: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 默认把它放在
<%= form_for(@usernode) do |f| %>,我称之为愚蠢的 Rails 魔法。将表单修复为<%= form_for(@usernode, url: new_usernode_path) do |f| %>
标签: ruby-on-rails neo4j neo4j.rb