Rails Error: Can't understand the message - ArgumentError: wrong number of arguments (0 for 1)
Rails Error: Can't understand the message - ArgumentError: wrong number of arguments (0 for 1)
我正在尝试用 Rails 4.
制作一个应用
我有三个模型:
User.rb (for authentication and fixed details)
Profile.rb (for user details which can change)
project.rb (for projects that users create)
在我的 projects_controller 中,我有:
def show
@project = Project.find(params[:id])
@creator = User.find(@project.creator_id)
@creator_profile = @creator.profile
end
用户和项目的关联是项目属于用户。在我的项目 table 中,我有一个名为 'creator_id' 的整数属性。我没有单独的 'user_id' 字段。
我有创建者,因为我想定义创建项目的用户(以便项目创建者链接到该用户的个人资料(而不是正在查看该项目的 current_user 的个人资料)。
在我的项目模型中,我定义了一个范围和一个方法如下:
scope :creator, lambda { where(@creator_profile = user.profile_id)}
scope :current, lambda { where('project.start_date >= ?', Date.today)}
def self.all_current_for_creator(creator)
if creator.profile.present?
creator.current
else
guest_visible
end
end
然后,在我的个人资料展示中,我想展示创作者的所有当前项目。为此,我有:
<div class="row">
<div class="col-md-10 col-md-offset-1">
<% Project.all_current_for_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 %>
当我尝试这个时,我收到一条错误消息:
ArgumentError at /profiles/3
wrong number of arguments (0 for 1)
我不明白这个错误是什么意思。我不确定什么在寻找参数,我看不到任何没有参数且看起来应该有参数的内容。
谁能看出我哪里出错了?
您正在呼叫:
Project.all_current_for_creator
没有参数。你应该这样称呼它:
Project.all_current_for_creator(@creator)
更新
.sort_by(&:created_at) do |project|
应该是:
.sort_by(&:created_at).each do |project|
因为在第一种情况下,您要传递两个块 &:created_at
和 do ...
。
我正在尝试用 Rails 4.
制作一个应用我有三个模型:
User.rb (for authentication and fixed details)
Profile.rb (for user details which can change)
project.rb (for projects that users create)
在我的 projects_controller 中,我有:
def show
@project = Project.find(params[:id])
@creator = User.find(@project.creator_id)
@creator_profile = @creator.profile
end
用户和项目的关联是项目属于用户。在我的项目 table 中,我有一个名为 'creator_id' 的整数属性。我没有单独的 'user_id' 字段。
我有创建者,因为我想定义创建项目的用户(以便项目创建者链接到该用户的个人资料(而不是正在查看该项目的 current_user 的个人资料)。
在我的项目模型中,我定义了一个范围和一个方法如下:
scope :creator, lambda { where(@creator_profile = user.profile_id)}
scope :current, lambda { where('project.start_date >= ?', Date.today)}
def self.all_current_for_creator(creator)
if creator.profile.present?
creator.current
else
guest_visible
end
end
然后,在我的个人资料展示中,我想展示创作者的所有当前项目。为此,我有:
<div class="row">
<div class="col-md-10 col-md-offset-1">
<% Project.all_current_for_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 %>
当我尝试这个时,我收到一条错误消息:
ArgumentError at /profiles/3
wrong number of arguments (0 for 1)
我不明白这个错误是什么意思。我不确定什么在寻找参数,我看不到任何没有参数且看起来应该有参数的内容。
谁能看出我哪里出错了?
您正在呼叫:
Project.all_current_for_creator
没有参数。你应该这样称呼它:
Project.all_current_for_creator(@creator)
更新
.sort_by(&:created_at) do |project|
应该是:
.sort_by(&:created_at).each do |project|
因为在第一种情况下,您要传递两个块 &:created_at
和 do ...
。