如何从Rails应用程序中删除意外输出?

时间:2014-07-23 23:14:40

标签: ruby-on-rails ruby

我正在学习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

2 个答案:

答案 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元素,以确保您能够正常工作