步骤1.创建控制器
在您的应用程序根目录下运行:
rails g controller home blog
个
修改控制器/ homes_controller.rb:
class HomesController < ApplicationController
def blog
@posts = Post.all
end
end
你的控制器/ posts_controller.rb应该已经建立。最小你需要为你的问题是什么来定义的索引方法,你可能有其他的方法还有:
class PostsController < ApplicationController
def index
@posts = Post.all
end
end
步骤2.提取部分
变化的意见/职位/ index.htm.erb:
<h1>Listing posts</h1>
<%= render partial: 'shared/posts', object: @posts %>
<%= link_to 'New Post', new_post_path %>
创建/修改的意见/家庭/ blog.html.erb:
<h1>Listing posts</h1>
<%= render partial: 'shared/posts', object: @posts %>
<%= link_to 'New Post', new_post_path %>
创建视图/共享/ _posts.html.erb:
<table>
<tr>
<th>Titulo</th>
<th>Conteudo</th>
<th>Categoria</th>
<th>Criado em</th>
<th></th>
<th></th>
<th></th>
</tr>
<% posts.each do |post| %>
<tr>
<td><%= post.titulo %></td>
<td><%= post.conteudo %></td>
<td><%= post.category.name %></td>
<td><%= post.created_at.strftime("%d/%m/%Y") %></td>
<td><%= link_to 'Show', post %></td>
<td><%= link_to 'Edit', edit_post_path(post) %></td>
<td><%= link_to 'Delete', post, confirm: 'Are you sure?', method: :delete %></td>
</tr>
<% end %>
</table>
步骤3.设置路由。
你应该有这样的事情在你的routes.rb文件:
resources :posts or match 'posts/index' => 'posts#index'
它添加到配置/路线。RB:
match 'home/blog' => 'home#blog'
所以它看起来像这样(有几个变种):
的config/routes.rb中:
YourAppName::Application.routes.draw do
root to: 'posts#index'
resources :posts
match 'home/blog' => 'home#blog'
end
现在,当你启动服务器导轨(假设标准配置)并访问:
127.0.0.1:3000/posts/index和127.0.0.1:3000/home/blog
你应该看到相同的内容。
这应该是复制和粘贴,但我可以犯一些错别字和其他一些小错误(希望不是,如果生病了,如果生病了,尽量尝试编辑它们)。一般来看它,因为你需要3个步骤将http请求转发到你的Rails应用栈。
- 将URL映射到使用路由的控制器。
- 创建控制器并为视图内部准备数据。
- 在视图中显示数据。
环顾四周,在Rails Guides,Rails for Zombies和Rails Tutorial获取更多信息。
--------- Upadate你的第二个问题-----------
我真的不明白,你想什么来实现?目前,index.html.erb和blog.html.erb都显示了相同的数据,这是您要求的东西?
后表示一个帖子,可在sharde/_posts.html.erb中找到。你不能从index.html.erb或blog.html.erb引用它。
@posts代表所有帖子及其在index.html.erb或blog.html.erb中可用。
渲染部分:“共享/帖”,对象:@posts - 这条线说:“嗨,伙计粘贴在这里共享/职位文件的内容,并顺便说一句我这里有一个局部变量@posts所以如果你!需要在共享/帖子文件中使用该日期,我把它命名为帖子内部“
为了让它们看起来不同,修改两个文件和它们两个都相同的部分在sharde/_posts.html中。 ERB。
尝试例如删除此行:
<td><%= post.category.name %></td>
从共享文件,看看有什么事情发生。
添加一些html标签和思想家。
Rails有可能的帮助方法'找出他们检查我给你的链接和谷歌,谷歌,谷歌。
尝试添加与一些链接的link_to帮手
你好, 我做了所有的步骤,但是当我去发布/ index.html.erb或家庭/ blog.html.erb出现此错误: Home#博客中的NoMethodError 未定义的方法'each'for nil:NilClass – user1211674 2013-03-03 02:01:31
我该怎么办? – user1211674 2013-03-03 02:02:05
对不起的更改︰**呈现'共享/职位',对象:@职位** ** **呈现部分︰'共享/职位',对象:@职位**在这两个文件中我已更新答案 – Kocur4d 2013-03-03 02:18:30