Rails,通过link_to向控制器动作发送参数

时间:2016-01-24 16:29:28

标签: ruby-on-rails ruby-on-rails-4

以这种方式发送params以在控制器中创建动作是安全/可接受的吗?有没有潜在的问题?

<%= link_to "Acceptance", acceptances_path(acceptance: {favor_id: @favor.id, user_id: current_user.id}), method: :post %>

然后在控制器中

class AcceptancesController < ApplicationController

  def create
    @acceptance = Acceptance.new(acceptance_params)

    if @acceptance.save
      redirect_to favors_path
    else
      render :template => 'favors/index'
    end
  end

  private

  def acceptance_params
    params.require(:acceptance).permit(:favor_id, :user_id)
  end
end

感谢您提前的时间!

1 个答案:

答案 0 :(得分:2)

您可以做的最好(也是最安全的)是在控制器中分配这些ID。

由于您可以访问@favorcurrent_user个对象,因此您最好这样做:

def create
  @acceptance = Acceptance.new(acceptance_params)
  @acceptance.favor_id = @favor.id
  @acceptance.user_id = current_user.id
  # code omitted
end