2016-05-01 122 views
0

我知道这已被回答,但我已经通读了其中大部分,我仍然无法弄清楚。有人知道发生了什么吗?语法错误,意外的keyword_else,期待输入结束其他^

<% if current_user.try(:email) == Join.all(:email) %> 
     <div class="panel-default"> 
     <div class="panel-body"> 
      You're already signed up for this month! Thanks! 
     </div> 
     </div> 
    <% else %> 
     <% if user_signed_in? %> 
     <%= form_for @join do |f| %> 
      <%= f.email_field :email, value: current_user.email, class: "form-control input-lg", id: "join" %> <br> 
      <%= f.submit "Join This Month's Rewards", class: "btn btn-success btn-lg" %> 
     <% end %> 
     <% end %> 
    <% else %> 
     <div class="panel panel-default"> 
     <div class="panel-body"> 
     Sorry, you're not currently signed in, so you can't sign up for our rewards. You can sign in <a href="https://stackoverflow.com/users/sign_in">here.</a> 
     </div> 
     </div> 
    <% end %> 

以下是完整的错误:/Users/Sam/Documents/workspace/rewardsApp/app/views/joins/new.html.erb:19: syntax error, unexpected keyword_else, expecting keyword_end else ^的错误是在第29行,这是后<% else %>两个<% end %> 帮助最感谢!

+0

您应该提供完整的错误。 – Laurel

+0

@Laurel我修好了......你知道这个问题是什么吗?我讨厌寻求帮助,但我很困难。 – GOAT

回答

0

它看起来像您的if/else设置结束为时过早以说明视图的三种状态。

<% if current_user.try(:email) == Join.all(:email) %> 
     <div class="panel-default"> 
     <div class="panel-body"> 
      You're already signed up for this month! Thanks! 
     </div> 
     </div> 
    <% else %> 
     <% if user_signed_in? %> 
     <%= form_for @join do |f| %> 
      <%= f.email_field :email, value: current_user.email, class: "form-control input-lg", id: "join" %> <br> 
      <%= f.submit "Join This Month's Rewards", class: "btn btn-success btn-lg" %> 
     <% else %> 
      <div class="panel panel-default"> 
      <div class="panel-body"> 
      Sorry, you're not currently signed in, so you can't sign up for our rewards. You can sign in <a href="https://stackoverflow.com/users/sign_in">here.</a> 
      </div> 
      </div> 
     <% end %> 
    <% end %> 
+0

感谢@joncoud工作。表格后忘记了<% end %>。但除此之外,它的工作。 – GOAT

0

这可能是为什么适当缩进代码非常有用的一个很好的例子。一旦你这样做,很明显你有第二个else条款。

<% if current_user.try(:email) == Join.all(:email) %> 
    <div class="panel-default"> 
    <div class="panel-body"> 
     You're already signed up for this month! Thanks! 
    </div> 
    </div> 
<% else %> 
    <% if user_signed_in? %> 
    <%= form_for @join do |f| %> 
     <%= f.email_field :email, value: current_user.email, class: "form-control input-lg", id: "join" %> <br> 
     <%= f.submit "Join This Month's Rewards", class: "btn btn-success btn-lg" %> 
    <% end %> 
    <% end %> 
<% else %> <%# <= Uh oh, second else clause %> 
    <div class="panel panel-default"> 
    <div class="panel-body"> 
     Sorry, you're not currently signed in, so you can't sign up for our rewards. You can sign in <a href="https://stackoverflow.com/users/sign_in">here.</a> 
    </div> 
    </div> 
<% end %> 
相关问题