点击兑换优惠

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) %>