我是Ruby on rails的新手,在一个月内我将开始关于Ruby-on-Rails的课程,但我希望在开始课程之前获得一些代码,因为我想尽可能多地学习。
我做了一个项目:
rails new portfolio
然后我做了:
rails generate controller portfolio index
要获得头版。
Rails.application.routes.draw do
get 'portfolio/index'
resources :company
root 'portfolio#index'
end
然后:
rails generate controller company
控制器:
class CompanyController < ApplicationController
def new
end
end
然后我在views / portfolio /下面写了一个文件,名为index.html.erb,我的头版将在那里。在views / company / i下将有一个名为company的文件。
当我现在去网址:localhost:3000 /公司/公司我得到错误:
The action 'show' could not be found for CompanyController
我的CompanyController是这样的:
class CompanyController < ApplicationController
def new
end
end
任何知道很多关于红宝石的人都可以给我一个指向正确方向的小指针?谢谢。
从公司的单一型号和控制器开始。在index
中创建一个app/controllers/companies_controller
方法。然后在文件app/views/companies/index.html.erb
中创建内容以检查一切是否正常,例如:
<h1> Hi! This is root page and index method in CompaniesController! </h1>
在config/routes.rb
中,如果您计划创建和处理多个名称,则必须为companies
指定复数名称,并保留原样,如果该实体是该项目的唯一公司。此时为此资源设置复数名称,以便为CRUD创建标准路由:
resources :companies
root to: "companies#index"
有关rails guide的路线的更多信息。您可以尝试使用内置的scaffold生成器来快速生成应用程序框架:
rails generate scaffold companies
上面的命令将使用控制器中的CRUD方法和控制器方法的视图生成控制器,模型,视图和路由。 app/views/"resource_name_plural"
中的每个视图都使用config/routes.rb
文件中的控制器中的方法进行了调整。这就是MVC模式的工作原理。
如果你想创建静态页面,也许你应该看看high_voltage gem。
在Rails中你需要注意多元化。在为资源声明路由时,它应该始终是复数形式,除非极少数情况下资源真的是单数(只能有一个)。
Rails.application.routes.draw do
resources :companies
end
这将通往/companies
的所有公司和/companies/:id
的一家公司。如果您因此尝试获取/companies/company
,它将被路由到#show
动作,因为/company
将被解释为id。
控制器也应以复数形式命名:
# app/controllers/companies_controller.rb
class CompaniesController < ApplicationController
before_action :set_company, only: [:show, :edit, :update, :destroy]
# GET /companies
def index
@companies = Company.all
end
# GET /companies/:id
def show
end
# ...
private
def set_company
@company = Company.find(params[:id])
end
end
您可以使用scaffold命令获取标准rails CRUD控制器的完整示例:
rails g scaffold companies
如果您有create方法或new方法,则必须包含show方法和索引方法。
在你的路线
resources :companies
resources :portfolios
试试你的控制器:
class CompanyController < ApplicationController
def new
end
def new
end
def index
@companies = Company.all
end
def show
end
end
如果您有控制器,您可以创建视图并指出没有问题
localhost:3000/company/company
这个,我认为它应该是更像这样的东西。
localhost:3000/companies/
总是复数。您的控制器将查找方法中定义的视图。看看它是默认的,是我的一个项目的。在你的团体的地方将是公司。
查看视图的名称,与控制器的方法名称相同。对?