Rails语法错误,意外')'

时间:2011-09-14 18:35:33

标签: ruby-on-rails-3 cucumber

这将是一个非常愚蠢的问题,而且我几乎讨厌自己提出这个问题,但是这里也是如此。

当我运行我的Cucumber测试时,我得到一个“语法错误,意外的”)'“使用以下代码:

在我的用户模型中:

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 个答案:

答案 0 :(得分:5)

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

应该是:

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

不是没有=,它表示输出,而您的代码正在尝试输出if块的响应。

答案 1 :(得分:0)

好吧,这就是我所拥有的,以及它似乎如何运作:

在我的用户模型中:

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上的另一个问题!