Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

I am a newbie in rails and i tried creating a forum application based on a tutorial. This is my forum page but i keep getting the error:

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>  

here is the forum index page which is throwing the error:

<% 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>  
like image 240
trialError Avatar asked Oct 19 '13 06:10

trialError


4 Answers

<!-- <% end %> --> what is this doing? a html commented ERB tag will still evaluate. Remove it. if you want to comment ruby code use # instead, like <% #end %>

like image 101
Benjamin Udink ten Cate Avatar answered Nov 01 '22 10:11

Benjamin Udink ten Cate


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 %>
like image 32
Jonathan Bender Avatar answered Nov 01 '22 10:11

Jonathan Bender


all I could see wrong is that you set end before it should here

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

so try to move it like this

      <% if admin? %>
      <td><%= link_to "Edit", edit_forum_path(forum) %>
  </td><% end %>
like image 1
amine Avatar answered Nov 01 '22 10:11

amine


I think you have the order of opening and closing blocks jumbled up. if, for are all opening blocks that have to be closed at the appropriate times.

The commented-out end tag that Benjamin mentioned is actually important but misplaced and has to go between your </tr> and </table> tags to close the for forum in @forums.

I prepared a modified version with some realignments, so I could make sense of it more easily. Haven't actually tested it, though.

<% 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>
like image 1
CMW Avatar answered Nov 01 '22 10:11

CMW