我正在学习Ruby on Rails并且正在编写一个简单的应用程序。
我有一个脚手架任务和workBlock。该任务有许多工作块。工作块属于任务。在任务视图中,我试图显示任务的相关工作块。
结果是:
> Work Blocks:
>
> 2
> [#<WorkBlock id: 1, name: "2", start_time: "2014-07-23 22:52:00", end_time: "2014-07-23 22:52:00", hours_spent: nil, task_id: 33,
> created_at: "2014-07-23 22:52:26", updated_at: "2014-07-23 22:52:26">]
我不知道为什么“2”以下的所有东西都出现了,并且不知道如何摆脱它。
我也不知道这是否与涉及的日期时间类型有关。
以下是代码:
这是在任务节目中。
<p>
</br></br>
<h2>Work Blocks: </h2>
<%= @task.work_blocks.each do |work_block| %>
<li><%=link_to work_block.name , work_block_path(work_block)%></br>
<%end%>
</p>
<p>
<%=link_to 'Create Work Block', new_work_block_path(:task_id => @task.id)%>
</p>
这是在workBlock模型中:
# == Schema Information
#
# Table name: work_blocks
#
# id :integer not null, primary key
# name :string(255)
# start_time :datetime
# end_time :datetime
# hours_spent :integer
# task_id :integer
# created_at :datetime
# updated_at :datetime
#
class WorkBlock < ActiveRecord::Base
belongs_to :tasks
end
答案 0 :(得分:4)
将您的each
块替换为:
<% @task.work_blocks.each do |work_block| %>
<li><%=link_to work_block.name , work_block_path(work_block)%></br>
<%end%>
您正在使用each
输出<%= @task.work_blocks.each...%>
块的评估。
有关这两个标签的详细信息,请查看Difference between <% … %> and <%= .. %> in rails 3上的答案。
答案 1 :(得分:0)
输出标记
我第一次启动Rails时遇到了这个问题 - 如果你将.each
方法与<%= output tags %>
一起使用,你基本上会得到你想要循环的输出数据列表。
解决这个问题的方法是使用<% non output tags %>
,这样Ruby就不会输出循环本身,而是输出循环的内容:
<% @task.work_blocks.each do |work_block| %>
<li><%=link_to work_block.name , work_block_path(work_block)%></li>
<% end %>
-
<强> HTML 强>
按顺序,您的HTML标记格式不正确
HTML格式的一般规则是您需要关闭您使用的标记。当您使用<li>
元素时,通常必须使用</li>
将其关闭,否则您的浏览器中的HTML呈现会出现问题。
我强烈建议您阅读如何正确格式化页面上的HTML元素,以确保您能够正常工作