2013-03-02 50 views
2

如何从另一个页面上的数据库返回数据?将数据从数据库返回到另一个导轨的页面

我这个文件下:意见/职位/ index.htm.erb

<h1>Listing posts</h1> 

<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> 

<br /> 

<%= link_to 'New Post', new_post_path %> 

,我想显示另一个页面上这些值:观点的/ home/blog.html.erb

我该怎么做?你能否解释所有步骤,以便我可以在其他页面中显示这些值。


感谢Kocur4d

,但我怎么只得到了一些信息?例如:我想是出现在帖子页面像这样的标题(位于blog.html.erb):

<div class="post-title"> 
<h2 class="title"> <a href="link_to_post"> **<% = post.titulo%>** </ a> </ h2> 
</ div> 

回答

3

步骤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/index127.0.0.1:3000/home/blog

你应该看到相同的内容。

这应该是复制和粘贴,但我可以犯一些错别字和其他一些小错误(希望不是,如果生病了,如果生病了,尽量尝试编辑它们)。一般来看它,因为你需要3个步骤将http请求转发到你的Rails应用栈。

  1. 将URL映射到使用路由的控制器。
  2. 创建控制器并为视图内部准备数据。
  3. 在视图中显示数据。

环顾四周,在Rails GuidesRails for ZombiesRails 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帮手

+0

你好, 我做了所有的步骤,但是当我去发布/ index.html.erb或家庭/ blog.html.erb出现此错误: Home#博客中的NoMethodError 未定义的方法'each'for nil:NilClass – user1211674 2013-03-03 02:01:31

+0

我该怎么办? – user1211674 2013-03-03 02:02:05

+0

对不起的更改︰**呈现'共享/职位',对象:@职位** ** **呈现部分︰'共享/职位',对象:@职位**在这两个文件中我已更新答案 – Kocur4d 2013-03-03 02:18:30

0

在您的家居控制器,对于博客的方法,集@posts因为你需要... 也许

@posts = Post.all 
相关问题