4 Stimmen

Rails Syntaxfehler: unerwartetes keyword_ensure, erwartetes keyword_end

Machen Sie sich bereit
<% if params[:ballot_position].to_i > 1 %>

Wähler <%= params[:ballot_position].to_i - 1 %>, gehhole den Wähler <%= params[:ballot_position] %>
und tausche die Plätze mit ihm.

Wähler <%= params[:ballot_position] %>, wenn Sie bereit sind, klicken Sie auf die Schaltfläche "Bereit" unten.

<% @ballot_link = "/vote/#{params[:election_id]}/ballot/#{params[:ballot_position]}" %>
Bereit

Der obige Code scheint zu folgendem Ergebnis zu führen:

ready.html.erb:13: Syntaxfehler, unerwartetes Schlüsselwort_ensure, erwartete Schlüsselwort_end
ready.html.erb:15: Syntaxfehler, unerwartetes Ende, erwartete Schlüsselwort_end

Was ist los? Was ist falsch an dieser Syntax?

14voto

zeantsoi Punkte 25107

Die Fehler, die Sie wahrscheinlich erhalten, stammen höchstwahrscheinlich daher, dass Sie versuchen, eine if-else-Bedingung auszuführen, bei der Sie ein zusätzliches <% end %> vor <% else %> haben. Stellen Sie sicher, dass Ihre Bedingung der kanonischen if-else-end-Logik folgt, wie im folgenden Beispiel:

<% if ... %>
    <% @ballot_link = "/vote/#{params[:election_id]}/ballot/#{params[:ballot_position]}" %>
    Bereit
<% else %>
    ...
<% end %>

0voto

Amrit Dhungana Punkte 4167

Du verwendest die if-Bedingung. Daher musst du sie beenden. Die grundlegende Syntax für if-Bedingungen in erb lautet

<% if ...Bedingung.. %>
    Anweisung
<% end %>

Du musst entscheiden, was du verwendest. Ist es eine if-Bedingung oder eine if-else Bedingung?

In deinem Fall fehlt der <% end %> Abschnitt am Ende, also musst du ihn hinzufügen.

Mach dich bereit
<% if params[:ballot_position].to_i > 1 %>

Wähler <%= params[:ballot_position].to_i - 1 %>, hol den Wähler <%= params[:ballot_position] %> und tausche die Plätze mit ihnen.

Wähler <%= params[:ballot_position] %>, wenn du bereit bist, klicke auf den Button "Bereit" unten.

<% @ballot_link = "/vote/#{params[:election_id]}/ballot/#{params[:ballot_position]}" %>
Bereit 

<% end %>  # das ist, was du hinzufügen musst

0voto

Tebbers Punkte 484

Mein Problem war, dass ich vergessen hatte, einen do-Block zu beenden, als ich einen Link mit link_to erstellt habe. Mein falscher Code sah so aus:

      <%= link_to("#", :class => "example-class") do %>
        Verschachteltes HTML kommt hier hin

Ich hatte vergessen, den do-Block zu beenden. Der richtige Code sieht so aus:

      <%= link_to("#", :class => "example-class") do %>
        Verschachteltes HTML kommt hier hin
      <% end %>

Hoffentlich hilft das jemandem.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X