синтаксическая ошибка, неожиданный kDO_BLOCK, неожиданный kENSURE, ожидающий $ end - PullRequest
1 голос
/ 17 августа 2011

Я сталкиваюсь с двумя ошибками, с которыми я не знаю, как справиться.Я получаю 2 ошибки, когда следующая страница загружается (она вообще не загружается, просто показывает мне 2 ошибки, когда я пытаюсь получить к ней доступ).

Ошибка 1: / home / <...> /profile_pic.html.erb:7: синтаксическая ошибка, неожиданная ошибка kDO_BLOCK ... ofile_pics, ProfilePic.new, do | builder |@ output_buffer.safe ...

Ошибка 2: /home/<...>/profile_pic.html.erb:16: синтаксическая ошибка, непредвиденная ошибка kENSURE, ожидается $ end

Здеськод, который вызывает у нас проблемы: <% = render: частичный => 'layouts / head_loggedin'%>

<div id="main" style="float: left;">
  <% render :partial => 'layouts/head_settings' %>
  <h1>Change your profile picture</h1>
  <%= form_for(:update_profile_pic, :url => {:controller => 'setting', :action => 'update_profile_pic'}, :html => {:multipart => true}) do |f|%>
  <%= f.fields_for :profile_pics, ProfilePic.new, do |builder| %>
  <%= builder.file_field :image %>
  <% end %>
  <div>
    <%= submit_tag "Upload" %>
  </div>
  <% end %>
</div>

Еще одна страница, где мы используем то же самое do | builder |синтаксис выдает ту же неожиданную ошибку kDO_BLOCK, что и эта страница.

Мы используем скрепку для загрузки изображений.На ноутбуке моего друга, однако, эта проблема, кажется, не происходит вообще.Мы оба работаем с Ubuntu, наши гемфайлы идентичны ... и вот что важно, мы оба получили код из одного репозитория!

1 Ответ

2 голосов
/ 17 августа 2011

У вас случайная запятая:

<%= f.fields_for :profile_pics, ProfilePic.new, do |builder| %>
                                              ^-- right here

Анализатор Ruby ищет другой аргумент для f.fields_for, но видит блок и расстраивается, что приводит к неожиданной ошибке kDO_BLOCK.

Вторая ошибка:

/home/<...>/profile_pic.html.erb:16: syntax error, unexpected kENSURE, expecting $end

, вероятно, является побочным эффектом первого, но, поскольку в опубликованном ERB нет строки 16, я не могу быть уверен.

...