点击兑换优惠
Click to Redeem offer
我希望用户能够单击某项权益以将其添加到他们的个人资料中。我在福利的显示页面上放了一个兑换按钮,一旦用户点击兑换,它就会将该福利添加到他的个人资料中。
这是我的
class Benefit < ActiveRecord::Base
has_many :user_benefits
has_many :users, through: :user_benefits
end
class UserBenefit < ActiveRecord::Base
belongs_to :user
belongs_to :benefit
end
class User < ActiveRecord::Base
has_many :user_benefits
has_many :benefits, through: :user_benefits
end
我需要在视图中定义一个 link 来将此关联保存在数据库中。我已经可以使用 rails 控制台进行关联。
<%= link_to 'Redeem!', "" %>
尝试以下设置。
rails g controller user_benefits new
# UserBenefitsController
before_action :set_user
before_action :set_benefit
def new
@user.benefits << @benefit
redirect_to @user # maybe?
end
private
def set_user
@user = User.find(params[:user_id])
end
def set_benefit
@benefit = Benefit.find(params[:id])
end
在你的路线中:
resources :users, only: [] do
resources :benefits, controller: :user_benefits, only: [] do
member { get :new, as: :new }
end
end
resources :users, :benefits
最后在您看来:
<%= link_to 'Add Benefit', new_user_benefit_path(@user, @benefit) %>
我希望用户能够单击某项权益以将其添加到他们的个人资料中。我在福利的显示页面上放了一个兑换按钮,一旦用户点击兑换,它就会将该福利添加到他的个人资料中。
这是我的
class Benefit < ActiveRecord::Base
has_many :user_benefits
has_many :users, through: :user_benefits
end
class UserBenefit < ActiveRecord::Base
belongs_to :user
belongs_to :benefit
end
class User < ActiveRecord::Base
has_many :user_benefits
has_many :benefits, through: :user_benefits
end
我需要在视图中定义一个 link 来将此关联保存在数据库中。我已经可以使用 rails 控制台进行关联。
<%= link_to 'Redeem!', "" %>
尝试以下设置。
rails g controller user_benefits new
# UserBenefitsController
before_action :set_user
before_action :set_benefit
def new
@user.benefits << @benefit
redirect_to @user # maybe?
end
private
def set_user
@user = User.find(params[:user_id])
end
def set_benefit
@benefit = Benefit.find(params[:id])
end
在你的路线中:
resources :users, only: [] do
resources :benefits, controller: :user_benefits, only: [] do
member { get :new, as: :new }
end
end
resources :users, :benefits
最后在您看来:
<%= link_to 'Add Benefit', new_user_benefit_path(@user, @benefit) %>