4
<h1>Get Ready</h1>
<% if params[:ballot_position].to_i > 1 %>
<p>
Voter <%= params[:ballot_position].to_i - 1 %>, go get voter <%= params[:ballot_position] %>
and switch places with them.
</p>
<p>
Voter <%= params[:ballot_position] %>, when you are ready, click the button marked "Ready" below.
</p>
<% @ballot_link = "/vote/#{params[:election_id]}/ballot/#{params[:ballot_position]}" %>
<a href="<%= @ballot_link %>" class="btn btn-primary">Ready</a>

上面的代码似乎导致:

ready.html.erb:13: syntax error, unexpected keyword_ensure, expecting keyword_end
ready.html.erb:15: syntax error, unexpected $end, expecting keyword_end

这是怎么回事?这种语法有什么问题?

4

3 回答 3

14

您收到的错误很可能源于尝试执行 if-else 条件,其中您有一个额外的<% end %> before <% else %>。确保您的条件遵循规范的 if-else-end逻辑,如下所示:

<% if ... %>
    <% @ballot_link = "/vote/#{params[:election_id]}/ballot/#{params[:ballot_position]}" %>
    <a href="<%= @ballot_link %>" class="btn btn-primary">Ready</a>
<% else %>
    ...
<% end %>
于 2013-07-18T05:43:37.890 回答
0

您正在使用 if 条件。所以你应该结束它。erb 的基本 if 条件语法是

<% if ...condition.. %>
    Statement
<% end %>

你必须决定你使用什么?它是 if 条件或 if-else 条件

在您的情况下,末尾没有 <% end %> 子句,因此您必须添加它。

<h1>Get Ready</h1>
<% if params[:ballot_position].to_i > 1 %>
<p>
Voter <%= params[:ballot_position].to_i - 1 %>, go get voter <%= params[:ballot_position] %>
and switch places with them.
</p>
<p>
Voter <%= params[:ballot_position] %>, when you are ready, click the button marked "Ready" below.
</p>
<% @ballot_link = "/vote/#{params[:election_id]}/ballot/#{params[:ballot_position]}" %>
<a href="<%= @ballot_link %>" class="btn btn-primary">Ready</a> 

<% end %>  # this is what you have to add
于 2013-07-18T07:15:08.683 回答
0

我的问题是我在使用 link_to 创建链接时忘记结束 do 块。我的错误代码如下所示:

      <%= link_to("#", :class => "example-class") do %>
        Nested HTML goes here

我忘了结束 do 语句。正确的代码如下所示:

      <%= link_to("#", :class => "example-class") do %>
        Nested HTML goes here
      <% end %>

希望这可以帮助某人。

于 2015-06-23T14:52:17.430 回答