8

私はレールの初心者で、チュートリアルに基づいてフォーラム アプリケーションを作成しようとしました。これは私のフォーラム ページですが、エラーが発生し続けます。

syntax error, unexpected keyword_ensure, expecting end-of-input

Extracted source (around line #33):
30 
31    <p><% if admin? %><%= link_to "New Forum", new_forum_path %><% end %></p>  

エラーをスローしているフォーラムのインデックスページは次のとおりです。

<% title "Forums" %>  

<table>  
  <tr>  
    <th width="70%">Forum</th>  
    <th width="30%">Last Post</th>  
  </tr>  
  <% for forum in @forums %>  
    <tr>  
      <td><h4><%= link_to h(forum.name), forum_path(forum.id) %></h4>  
        <small><%= forum.topics.count %> topics</small><br />  
        <%=h forum.description %></td>  
      <td class="right">
      <% if forum.most_recent_post %>
      <%= distance_of_time_in_words_to_now forum.most_recent_post.last_post_at %>
       ago by 
       <%= link_to forum.most_recent_post.user.username, "/users/#{forum.most_recent_post.last_poster_id}" %>
       <% else %>no posts<% end %>
       </td>  
      <% if admin? %>
      <td><%= link_to "Edit", edit_forum_path(forum) %>
  <% end %></td>
  <!-- <% end %> -->  
  <% if admin? %>
  <td><%= link_to "Destroy", forum, :confirm => 'Are you sure?', :method => :delete %></td>
  <% end %>  
</tr>  
  <% end %>  

<p><% if admin? %><%= link_to "New Forum", new_forum_path %><% end %></p>  
4

4 に答える 4

3

Properly formatted code goes a long way towards diagnosing problems like this (mismatch and the like). Try out the following:

<% title "Forums" %>  

<table>  
  <tr>  
    <th width="70%">Forum</th>  
    <th width="30%">Last Post</th>  
  </tr>  
  <% for forum in @forums %>  
    <tr>  
      <td>
        <h4><%= link_to h(forum.name), forum_path(forum.id) %></h4>  
        <small><%= forum.topics.count %> topics</small>
        <br />
        <%=h forum.description %>
      </td>
      <td class="right">
        <% if forum.most_recent_post %>
          <%= distance_of_time_in_words_to_now forum.most_recent_post.last_post_at %>
          ago by 
          <%= link_to forum.most_recent_post.user.username, "/users/#{forum.most_recent_post.last_poster_id}" %>
        <% else %>
          no posts
        <% end %>
      </td>  
      <% if admin? %>
        <td><%= link_to "Edit", edit_forum_path(forum) %></td>
        <td><%= link_to "Destroy", forum, :confirm => 'Are you sure?', :method => :delete %></td>
      <% end %>
    </tr>
  <% end %>
</table>

<% if admin? %>
  <p><%= link_to "New Forum", new_forum_path %></p>
<% end %>
于 2013-10-20T10:23:22.080 に答える
1

ブロックの開閉の順番がごちゃ混ぜになっていると思います。 iffor適切なタイミングで閉じる必要があるすべての開始ブロックです。

ベンジャミンが言及したコメントアウトされた終了タグは、実際には重要ですが、場所が間違っており、</tr></table>タグの間に移動して を閉じる必要がありますfor forum in @forums

より簡単に理解できるように、いくつかの再調整を加えた修正版を用意しました。ただし、実際にテストしていません。

<% title "Forums" %>  

<table>  
  <tr>  
    <th width="70%">Forum</th>  
    <th width="30%">Last Post</th>  
  </tr>  
  <% for forum in @forums %>  
    <tr>  
      <td>
        <h4><%= link_to h(forum.name), forum_path(forum.id) %></h4>  
        <small><%= forum.topics.count %> topics</small><br />  
        <%=h forum.description %></td>  
      <td class="right">
      <% if forum.most_recent_post %>
        <%= distance_of_time_in_words_to_now forum.most_recent_post.last_post_at %>
         ago by 
         <%= link_to forum.most_recent_post.user.username, "/users/#{forum.most_recent_post.last_poster_id}" %>
      <% else %>
        no posts
      <% end %>
      </td>  
      <% if admin? %>
        <td>
          <%= link_to "Edit", edit_forum_path(forum) %>
        </td>
      <% end %>
      <% if admin? %>
        <td><%= link_to "Destroy", forum, :confirm => 'Are you sure?', :method => :delete %></td>
      <% end %>  
    </tr>
  <% end %>
</table>
<p>
  <% if admin? %>
    <%= link_to "New Forum", new_forum_path %>
  <% end %>
</p>
于 2013-10-20T09:36:51.367 に答える
1

私が間違っていると思うのは、ここで終わる前にあなたが終わりを迎えたことだけです

      <% if admin? %>
      <td><%= link_to "Edit", edit_forum_path(forum) %>
  <% end %></td>

このように動かしてみてください

      <% if admin? %>
      <td><%= link_to "Edit", edit_forum_path(forum) %>
  </td><% end %>
于 2013-10-19T06:43:26.273 に答える