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| %>
<%=
表示评估/执行代码并将其插入到 html 中,而 <%
表示简单地评估/执行代码
【讨论】:
以上是关于Rails 视图从哈希中打印我们想要的某些值,然后是完整的哈希 - 为啥?的主要内容,如果未能解决你的问题,请参考以下文章