我的人际关系控制器和商店模型之间有问题。我使用关系在商店和用户之间创建了一种类似于朋友的关联。在尝试将用户添加为商店时,我收到以下错误:
ArgumentError in RelationshipsController#create
wrong number of arguments (0 for 1)
在商店模型的add(user)
的第一行:
shop.rb
class Shop < ActiveRecord::Base
has_many :relationships
has_many :users, through: :relationships
.
.
.
def add(user)
relationships.create(user_id: other_user.id)
end
.
.
end
此命令由&#34;创建&#34;触发。在关系控制器中:
relationships_controller.rb
class RelationshipsController < ApplicationController
before_action :logged_in_shop
def create
user = User.find(params[:user_id])
current_shop.add.relationship(user)
redirect_to user
end
def destroy
user = Relationship.find(params[:user_id])
current_shop.remove.relationship(user)
redirect_to user
end
end
单击此添加按钮后:
<%= form_for(current_shop.relationships.build) do |f| %>
<div><%= hidden_field_tag :user_id, @user.id %></div>
<%= f.submit "Add", class: "btn btn-primary" %>
<% end %>
由于某种原因,参数(用户)不会被带到add(user)
方法。我怎样才能做到这一点? (我知道我的语法中有几个错误,这是一个工作版本。寻找这个特定错误的帮助,在我摆脱这个错误后会处理其他错误。)
关系模型
class Relationship < ActiveRecord::Base
belongs_to :user
belongs_to :shop
validates :user_id, presence: true
validates :shop_id, presence: true
end
答案 0 :(得分:0)
引发错误是因为您在没有任何参数的情况下调用了add
:
current_shop.add.relationship(user)
由于你已经实现了add
一个参数,你应该传递它
def create
user = User.find(params[:user_id])
current_shop.add(user)
redirect_to user
end