Rails 视图从哈希中打印我们想要的某些值,然后是完整的哈希 - 为啥?

Posted

技术标签:

【中文标题】Rails 视图从哈希中打印我们想要的某些值,然后是完整的哈希 - 为啥?【英文标题】:Rails view is printing certain values we want from a hash and then the full hash - WHY?Rails 视图从哈希中打印我们想要的某些值,然后是完整的哈希 - 为什么? 【发布时间】:2014-07-31 21:12:06 【问题描述】:

我们正在尝试构建提交的 cmets 和文章的提要,仅调用和显示每个的某些属性。我们能够获得各种提要,但该页面还返回了文章和 cmets 的所有属性的哈希值。见下文:

控制器:

  def show
        @user = User.find(params[:id])
      # @feed= (Article.all + Comment.all).sort!|a,b| a.updated_at <=> b.updated_at.reverse.take(10)

  comments = Comment.all
  comments_array = []
  comments.each do |f|
    comment_info =
    comment_info['feed_text'] = f.commenter + ' submitted to a goal'
    comment_info['time_stamp']=f.updated_at
    comments_array<<comment_info
  end

  articles=Article.all
  articles_array =[]
  articles.each do |f|
    article_info =
    article_info['feed_text']='A new goal has been created:' + f.title
    article_info['time_stamp']=f.created_at
    articles_array<<article_info
  end



  @feed = (comments_array + articles_array).sort!|a,b| a['time_stamp'] <=> b['time_stamp'].reverse.take(10)

  end

查看:

        <p>
        <%= @feed.each do |f| %>
        <p>
            <%= f['feed_text'] %>
        </p>
        <% end %>

        </p>

下面显示了页面上显示的内容:

#what_we_want:

2 提交到一个目标

新提交到目标

一个新的目标已经创建:测试 6

创建了一个新目标:test2

#what_we_don't_want:

["feed_text"=>"2 提交到一个目标", "time_stamp"=>2014 年 7 月 31 日星期四 19:27:40 UTC +00:00, "feed_text"=>"新提交到一个目标", "time_stamp"=>星期四, 2014 年 7 月 31 日 19:27:31 UTC +00:00, "feed_text"=>"新目标已创建:测试 6", "time_stamp"=>星期四, 2014 年 7 月 31 日 19:27:19 UTC +00:00, "feed_text"=>"已创建新目标:test2", "time_stamp"=>2014 年 7 月 31 日星期四 14:45:09 UTC + 00:00]

我们无法弄清楚为什么页面会同时显示 #what_we_want 和 #what_we_don't_want。

【问题讨论】:

【参考方案1】:

你想替换

<%= @feed.each do |f| %>

<% @feed.each do |f| %>

&lt;%= 表示评估/执行代码并将其插入到 html 中,而 &lt;% 表示简单地评估/执行代码

【讨论】:

以上是关于Rails 视图从哈希中打印我们想要的某些值,然后是完整的哈希 - 为啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Rails 助手渲染部分

如何从rails中的视图将值传递给jquery?

使用 RSpec 测试 Rails 辅助方法时如何在参数哈希中设置值?

从 Rails 4 视图上的单选按钮获取输入

如何从它们插入哈希图中的顺序打印哈希图值

从 Rails 的视图中删除/创建单独的样式