Rails:给定了块arg和实际块 [英] Rails: both block arg and actual block given
本文介绍了Rails:给定了块arg和实际块的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试在Rails 4中制作一个应用.
I am trying to make an app in Rails 4.
我的个人资料显示页面中有此代码,以显示用户创建的所有项目.
I have this code in my profiles show page, to show all the projects a user has created.
<div class="row">
<div class="col-md-10 col-md-offset-1">
<% Project.all_current_for_creator(@creator).sort_by(&:created_at) do |project| %>
<div class="row">
<div class="col-md-4">
<div class="indexdisplay">
<%= image_tag project.hero_image_url, width: '100%', height: '200px' if project.hero_image.present? %>
</div>
</div>
<div class="col-md-8">
<div class="row">
<div class="col-md-12">
<div class="indexheading"> <%= link_to project.title, project %> </div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="indexsubtext">
<%= truncate(project.description, :ommission => "...", :length => 250) %>
</div>
</div>
</div>
</div>
</div>
<% end %>
尝试此操作时,出现错误消息:
When I try this, I get an error that says:
SyntaxError at /profiles/3
both block arg and actual block given
任何人都可以看到问题在哪里吗?
Can anyone see what's wrong?
方法'all_current_for_creator'在我的project.rb中定义为:
The method 'all_current_for_creator' is defined in my project.rb as:
def self.all_current_for_creator(creator)
if creator.profile.present?
creator.current.visible
else
guest_visible
end
end
我在project.rb中定义了三个范围:
I have defined three scopes in project.rb as:
scope :creator, lambda { where(@creator_profile = user.profile_id)}
scope :current, lambda { where('project.start_date >= ?', Date.today)}
scope :visible, lambda { joins(:sweep => :disclosure).where('disclosures.allusers' => 'true')
.joins(:sweep => :finalise).where('finalises.draft' => 'false') }
推荐答案
.sort_by(&:created_at) do |project|
应该是:
.sort_by(&:created_at).each do |project|
因为在第一种情况下,您要传递两个块&:created_at
和do ...
.
Because in the first case you are passing two blocks &:created_at
and do ...
.
这篇关于Rails:给定了块arg和实际块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文