Error : ArgumentError in Messages#new wrong number of arguments (2 for 1)
Error : ArgumentError in Messages#new wrong number of arguments (2 for 1)
我在消息中收到 ArgumentError#new
app/views/messages/new.html.erb 第 16 行提出:
"wrong number of arguments (2 for 1)"
它还说:
app/helpers/application_helper.rb:8:在 avatar_url'
app/helpers/messages_helper.rb:5:in
块中 recipients_options'
app/helpers/messages_helper.rb:4:在 recipients_options'
app/views/messages/new.html.erb:16:in
块中 _app_views_messages_new_html_erb___264831154_80406348'
app/views/messages/new.html.erb:3:在`_app_views_messages_new_html_erb___264831154_80406348'
我的申请助手:
module ApplicationHelper
def page_header(text)
content_for(:page_header) { text.to_s }
end
def avatar_url(user)
if user.image
user.image
else
"/images/missing.png"
end
end
end
我的消息助手是,
module MessagesHelper
def recipients_options(chosen_recipient = nil)
s = ''
User.all.each do |user|
s << "<option value='#{user.id}' data-img-src='#{image_tag avatar_url(user.email, size: 50)}' #{'selected' if user == chosen_recipient}>#{user.name}</option>"
end
s.html_safe
end
end
我的 messages/new.html.erb 是,
<% page_header "Start Conversation" %>
<%= form_tag messages_path, method: :post do %>
<div class="form-group">
<%= label_tag 'message[subject]', 'Subject' %>
<%= text_field_tag 'message[subject]', nil, class: 'form-control', required: true %>
</div>
<div class="form-group">
<%= label_tag 'message[body]', 'Message' %>
<%= text_area_tag 'message[body]', nil, cols: 3, class: 'form-control', required: true %>
</div>
<div class="form-group">
<%= label_tag 'recipients', 'Choose recipients' %>
<%= select_tag 'recipients', recipients_options(@chosen_recipient), multiple: true, class: 'form-control chosen-it' %>
</div>
<%= submit_tag 'Send', class: 'btn btn-primary' %>
<% end %>
messages_controller.rb
class MessagesController < ApplicationController
before_action :authenticate_user!
def new
@chosen_recipient = User.find_by(id: params[:to].to_i) if params[:to]
end
def create
recipients = User.where(id: params['recipients'])
conversation = current_user.send_message(recipients, params[:message][:body], params[:message][:subject]).conversation
flash[:success] = "Message has been sent!"
redirect_to conversation_path(conversation)
end
end
在 #{image_tag avatar_url(user.email, size: 50)}
下你传递了两个参数,但是 def avatar_url(user)
只需要一个。
您定义了接受一个参数的 avatar_url
,但您向它传递了两个参数
avatar_url(user.email, size: 50)
我在消息中收到 ArgumentError#new app/views/messages/new.html.erb 第 16 行提出: "wrong number of arguments (2 for 1)" 它还说:
app/helpers/application_helper.rb:8:在 avatar_url'
app/helpers/messages_helper.rb:5:in
块中 recipients_options'
app/helpers/messages_helper.rb:4:在 recipients_options'
app/views/messages/new.html.erb:16:in
块中 _app_views_messages_new_html_erb___264831154_80406348'
app/views/messages/new.html.erb:3:在`_app_views_messages_new_html_erb___264831154_80406348'
我的申请助手:
module ApplicationHelper
def page_header(text)
content_for(:page_header) { text.to_s }
end
def avatar_url(user)
if user.image
user.image
else
"/images/missing.png"
end
end
end
我的消息助手是,
module MessagesHelper
def recipients_options(chosen_recipient = nil)
s = ''
User.all.each do |user|
s << "<option value='#{user.id}' data-img-src='#{image_tag avatar_url(user.email, size: 50)}' #{'selected' if user == chosen_recipient}>#{user.name}</option>"
end
s.html_safe
end
end
我的 messages/new.html.erb 是,
<% page_header "Start Conversation" %>
<%= form_tag messages_path, method: :post do %>
<div class="form-group">
<%= label_tag 'message[subject]', 'Subject' %>
<%= text_field_tag 'message[subject]', nil, class: 'form-control', required: true %>
</div>
<div class="form-group">
<%= label_tag 'message[body]', 'Message' %>
<%= text_area_tag 'message[body]', nil, cols: 3, class: 'form-control', required: true %>
</div>
<div class="form-group">
<%= label_tag 'recipients', 'Choose recipients' %>
<%= select_tag 'recipients', recipients_options(@chosen_recipient), multiple: true, class: 'form-control chosen-it' %>
</div>
<%= submit_tag 'Send', class: 'btn btn-primary' %>
<% end %>
messages_controller.rb
class MessagesController < ApplicationController
before_action :authenticate_user!
def new
@chosen_recipient = User.find_by(id: params[:to].to_i) if params[:to]
end
def create
recipients = User.where(id: params['recipients'])
conversation = current_user.send_message(recipients, params[:message][:body], params[:message][:subject]).conversation
flash[:success] = "Message has been sent!"
redirect_to conversation_path(conversation)
end
end
在 #{image_tag avatar_url(user.email, size: 50)}
下你传递了两个参数,但是 def avatar_url(user)
只需要一个。
您定义了接受一个参数的 avatar_url
,但您向它传递了两个参数
avatar_url(user.email, size: 50)