Ruby on Rails中的脚手架和CSS

kev*_*pah 4 ruby ruby-on-rails scaffolding

我做了一个博客帖子有两个条目(titlecontent)这样

rails generate scaffold Post title:string content:text
Run Code Online (Sandbox Code Playgroud)

这可行,但是

  1. 如果以后要添加新的输入区域怎么办?例如 author字段或其他内容。我在哪里向我的Post支架添加更多字段?

  2. style.css在公共目录中制作了一个样式表。它只是坐在那里。例如,如何将其链接到我的文件app/views/post/new.html.erb

  3. 在哪里可以了解对特定领域脚手架的所有调整?例如 我希望title输入字段不包含特殊字符(例如@#$%)或不超过特定长度。

我正在使用Windows和Rails 3.2.8。

KAR*_*ván 5

3合1问题:)

第一个答案

正如其他人所说,您需要修改表以具有新字段,并且可以通过迁移轻松完成:

rails generate migration AddAuthorToPost author:string
Run Code Online (Sandbox Code Playgroud)

但是您还需要修改视图,因为它不包含新字段。相应的视图位于app/views/posts(查找edit.html.erbnew.html.erb)。

当然,您需要在数据库上运行迁移:

rake db:migrate
Run Code Online (Sandbox Code Playgroud)

第二个答案

您可以在中添加样式表到视图中,app/views/posts但是我建议您为应用程序使用布局,这些布局位于中app/views/layouts。您可以application.html.erb在您的布局目录中简单地创建一个,然后将其中包含的CSS放在其中。

<html>
  <head>
    <%= stylesheet_link_tag "custom" %>
  </head>
  <body>
    <%= yield %>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

yield块将包含视图的实际输出,因此您应该从现有视图中删除这些部分。

第三答案

如果要控制某个字段的可接受字符,则可以在模型中进行验证

validates :title,
  :format => { :with => /\A[a-zA-Z]+\z/, :message => "Only letters allowed" },
  :length => { :maximum => 20 }
Run Code Online (Sandbox Code Playgroud)