所以我跑了
行rails g model Post user_id:integer title_id:integer:index story:text tags:string eol:datetime
rails g controller Post user_id:integer title_id:integer:index story:text tags:string eol:datetime
并创建了以下路线:
Rails.application.routes.draw do
get 'post/user_id:integer'
get 'post/title_id:integer:index'
get 'post/story:text'
get 'post/tags:string'
get 'post/eol:datetime'
devise_for :users
root :to => "visitors#index"
end
和以下控制器
class PostController < ApplicationController
def user_id:integer
end
def title_id:integer:index
end
def story:text
end
def tags:string
end
def eol:datetime
end
end
我很困惑为什么会这样做。这是针对API请求的吗?我已经习惯了具有典型index
,new
,update
CRUD内容的控制器。是因为我应该让他们离开generate命令吗?即便如此,这可能是一种生成API的方法吗?
最后一个问题我看过:索引标记在模型之前,但我不明白它的目的,或者它将如何帮助。
但是,唯一需要回答这个问题的问题是为什么路线是以这种方式产生的。谢谢。
答案 0 :(得分:2)
当你这样做时:
rails g controller Post action_name1, action_name2
然后将其视为控制器操作。所以在你的命令中:
rails g controller Post user_id:integer title_id:integer:index story:text tags:string eol:datetime
您的属性被视为操作。
生成的路线也是如此。
如果您希望rails只使用1个命令自动为您设置模型,控制器,视图和路径,请使用:
rails g scaffold Post user_id:integer title_id:integer:index story:text tags:string eol:datetime
(参考:bbozo)
随意问更多我不理解。
答案 1 :(得分:1)
你可能想做
rails g scaffold Post user_id:integer title_id:integer:index story:text tags:string eol:datetime
答案 2 :(得分:0)
rails g model Post
对于user_id:integer title_id:integer:index story:text tags:string eol:datetime
模型,会将attributes
视为Post
和
rails g controller Post
会将user_id:integer title_id:integer:index story:text tags:string eol:datetime
视为actions
模型的Post
for CRUD Scaffold
是rails中的最佳功能...有关详细信息,您可以阅读Rails的 Ruby on Rails Guide 官方tutorail;)