Мое приложение показывает дополнительную информацию ... которая не нужна - PullRequest
2 голосов
/ 20 декабря 2010

У меня есть действие, которое называется «список» и определяется как

def list
   @subjects = Subject.order("subjects.position ASC")  
end

И мой список выглядит как

<div>
  <h2>Subjects</h2>

  <%= link_to("Add new subject",{:action=>'new'},:class=>'action new')%>
  <table class="listing" summary="Subject list">
    <tr class="header"> 
      <th>&nbsp;</th>
      <th>Subject</th>
      <th>Visible</th>
      <th>Pages</th>
      <th>Actions</th>
    </tr>

    <%= @subjects.each do |subject| %>  
     <tr>
     <td><%=subject.position%></td>   
     <td><%=subject.name%></td>   
     <td class="center"><%=subject.visible ? 'Yes':'No' %></td>
     <td class="center"><%=subject.pages.size%></td>
     <td class="actions">
       <%=link_to "Show",{:action=>'show',:id=>subject.id},:class=>'action show'%>
       <%=link_to "Edit",{:action=>'edit',:id=>subject.id},:class=>'action edit'%>
      <%=link_to "Delete",{:action=>'delete',:id=>subject.id},:class=>'action delete'%>
   </td>
  </tr>
 <%end%>   

 </table>
</div>

Таким образом, проблема в том, что помимо получения организованного списка всех предметов рядом с моей ссылкой "Добавить тему" на странице печатается вся информация, которую @ subjetcs приносит с контроллера.

Что, конечно, не очень хорошая идея ... Я не могу понять, почему это происходит

Ответы [ 3 ]

2 голосов
/ 20 декабря 2010

Ваша проблема - линия <%= @subjects.each do |subject| %>.Поскольку у вас есть <%=, возвращаемое значение этой строки - @subjects - должно быть записано в документе.

Вместо этого используйте <% @subjects.each do |subject| %>, чтобы подавить вывод.

0 голосов
/ 20 декабря 2010

<%= @subjects.each do |subject| %>

должно быть:

<% @subjects.each do |subject| %>

Знак равенства говорит ERB, что код должен что-то выводить.Вы хотите опустить это в итераторе.

0 голосов
/ 20 декабря 2010

Удалите знак равенства из строки <%= @subjects.each do |subject| %>.

ERB выводит все, что находится в тегах <%= ... %>, на страницу.Так что в этом случае возвращаемое значение @subjects.each записывается на страницу.Таким образом, вместо этого запишите свой цикл следующим образом:

<% @subjects.each do |subject| %>
  ...
<% end %>

Это относится ко всем операторам, которые делают вещи, а не выводят вещи на страницу.Например, вы бы написали оператор if как:

<% if some_condition %>
  ...
<% else %>
  ...
<% end %>

, а не как:

<%= if some_condition %>
  ...
<% else %>
  ...
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...