Синтаксическая ошибка Rails, неожиданная ')' - PullRequest
0 голосов
/ 14 сентября 2011

Это будет очень тупой вопрос, и я почти ненавижу себя за то, что задаю его, но здесь все сказано.

Когда я запускаю тест на огурец, я получаю «синтаксическую ошибку, неожиданную») со следующим кодом:

внутри моей пользовательской модели:

def member?(gallery)
    array = []
    self.groups.each do |group|
        array << group.id
    end
    if array.include?(gallery.group.id)
        true
    end
end

И на мой взгляд:

<ul>
<% @galleries.each do |gallery| %>
    <% if current_user.member?(gallery) %>
    <li>
        <%= link_to gallery.title, gallery %>
    </li>
    <% end %>
<% end %>
</ul>

РЕДАКТИРОВАТЬ: Здесь важная часть ошибки в полном объеме:

 ~/Coding/Rails/galleryTest/app/views/galleries/index.html.erb:8: syntax error, unexpected     ')', expecting keyword_then or ';' or '\n'
  ... current_user.member? gallery );@output_buffer.safe_concat('
  ...                               ^
  ~/Coding/Rails/galleryTest/app/views/galleries/index.html.erb:13: syntax error, unexpected keyword_end, expecting ')'
  ');    end 
            ^

РЕДАКТИРОВАТЬ 2: Вот ошибка при удалении '=':

Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id (ActionView::Template::Error)
  ./app/models/user.rb:18:in `member?'

Я пробовал несколько разных вещей, и я должен упустить что-то действительно тривиальное. Другая пара глаз будет с благодарностью.

Большое спасибо.

Ответы [ 2 ]

5 голосов
/ 14 сентября 2011
<%= if current_user.member?(gallery) %>

должно быть:

<% if current_user.member?(gallery) %>

Не то, что нет =, это означает вывод, и ваш код пытается вывести ответ блока if.

0 голосов
/ 15 сентября 2011

Хорошо, вот что у меня есть, и как оно работает:

В моей модели пользователя:

def member?(gallery)
    array = self.groups.collect { |g| g.id }
    if array.include?(gallery.group_id)
        true
    end
end

На мой взгляд:

<% if user_signed_in?  %>
<ul id="private_galleries">
    <% @galleries.each do |gallery| %>
            <% if current_user.member?(gallery) %>
            <li>
                <%= link_to gallery.title, gallery %>
            </li>
            <% end %>
    <% end %>
</ul>
<% end %>

<ul>
<% @galleries.each do |gallery| %>
    <% if gallery.group_id == nil %>
        <li>
            <%= link_to gallery.title, gallery %>
        </li>
    <% end %>
<% end %>
</ul>

Мои тесты теперь работают нормально, но они не проходят, что странно, так как, когда я настраиваю пользователей с группами и галереи с группами и просматриваю их при работающем сайте, они, кажется, показывают соответственно, что простомои тесты, вероятно, истекли.Это будет задача на утро, и, возможно, еще один вопрос по StackOverflow!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...