【问题标题】:Trouble with ruby on rails routes with two word controller name带有两个单词控制器名称的rails路由上的ruby问题
【发布时间】:2012-12-30 01:17:34
【问题描述】:

我想创建一个名为 Database Importer 的控制器。

这是我跑的:

rails generate controller database_importer index

生成的:

class DatabaseImporterController < ApplicationController
  def index
  end

  def import
    # to do.
    # Receive the uploaded CSV file and import to the database.
    CSV.foreach("parse.csv") do |row|

    end
  end
end

当我访问 http://0.0.0.0:3000/database_importer/index 时,我得到:

Routing Error

No route matches {:action=>"import", :controller=>"database_importer"}
Try running rake routes for more information on available routes.

这是我的相关路线:

get 'database_importer/index'

为什么路由引擎试图将我推向导入操作方法?

当我尝试更改路由以反映实际的控制器名称(它没有下划线)时,我得到:

get 'databaseimporter/index'

Routing Error

uninitialized constant DatabaseimporterController
Try running rake routes for more information on available routes.

【问题讨论】:

    标签: ruby-on-rails-3 controller routes action


    【解决方案1】:

    您是否也定义了如下路线:

    post 'database_importer/import'
    

    我认为当 Rails 尝试为表单生成路由时,表单操作失败了。

    【讨论】:

    • 不,我根本没有添加那条路线。为什么需要存在呢?
    • 解决了这个问题......所以要明确一点:我需要在我的控制器中为所有操作设置路由才能使其正常工作?所有操作都是公共方法?
    • 您需要为您正在使用的操作定义路由。如果您手动生成 HTML 并编造一些虚构的路线,而不是在渲染时 Rails 不会知道 - 当然点击或表单帖子会失败,因为路线不存在。但是,如果您使用 Rails 路由助手为您生成表单操作,是的,该路由必须存在,以便 Rails 可以生成适当的 href/url 等。
    猜你喜欢
    • 2015-12-27
    • 2014-12-01
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 2014-10-07
    • 1970-01-01
    相关资源
    最近更新 更多