Rails 4应该允许的不允许的params

时间:2014-06-29 14:06:34

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

我有点困惑这个。我确信这很简单,但我仍然无法理解。

这是我的许可证方法:

def post_params
  params.require(:post).permit(:char_id, :text).merge!(topic_id:params[:topic_id], user_id: current_user.id, ip: request.remote_ip)
end

以下是请求路由到的控制器更新方法:

def update
  @post.update(post_params)
  respond_to do |format|
    format.html { redirect to  }
    format.json { render partial: "post", locals: {post:@post} }
  end
end

这是请求附带的the params hash 我需要得到一些like this

当我看到控制台时,我看到了这一点:

Unpermitted parameters: id, text, char_id, ip, show_text, posted_at, char, editable, deletable, commentable, user

这是错误的还是我错过的东西?

2 个答案:

答案 0 :(得分:1)

我相信您已关闭,请尝试修改您的post_params方法,如下所示:

def post_params
  params.permit(:topic_id)
  params.require(:post).permit(:text, :char => [:id]).merge({ip: request.remote_ip, user: current_user})
end

最大的区别是我们传递了merge一个哈希值,但也指定了:char嵌套在:post内的我们想要的内容,以及白名单:topic_id(其中不属于:post)。

答案 1 :(得分:0)

我认为合并是问题所在。它在错误的地方。

你拥有它的方式是合并作用于

产生的params对象
params.require(:post).permit(:char_id, :text)

请改为尝试:

def post_params
  params.require(:post).merge(user_id: current_user.id, ip: request.remote_ip)).permit({:char_id, :text, topic_id, :user_id, :ip}
end