1

我正在使用 teamtreehouse 教程学习 rails。本教程使用 3.1,但我正在尝试学习 4.0,结果我遇到了一个困难,大概是因为 rails 4 使用强参数的力量。我有两个模型,一个用户模型和一个状态模型。我已经使用设计为用户创建身份验证,并包含了新参数。它们是:first_name、:last_name 和:profile_name。我创建了用户和状态之间的关系。

目前使用新参数的用户注册正在工作;我可以使用例如 current_user.last_name 访问它们。但是,我想在状态索引视图上显示创建帖子的用户的 profile_name(每个用户还没有单独的页面)。我想使用

status.user.profile_name

然而它只是显示为空白。如果我做 status.user.email(这是一个预先配置的设计参数),它显示没有问题。我猜我必须在某些控制器中将这些参数列入白名单,但我不知道在哪里或如何。谢谢

4

1 回答 1

3

我想,在这里你会找到你的答案:https ://github.com/plataformatec/devise/tree/rails4#strong-parameters

基于上面的链接,我认为你应该在你的 ApplicationController 中插入这样的东西:

class ApplicationController < ActionController::Base
  before_filter :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:user) { |u| u.permit(:profile_name) }
  end
end

我已经在上一个问题中提出了建议...... Rails 和 Devise 的强大参数

...您可以创建自己的控制器,该控制器可以扩展设计自己的控制器。有一个要点: https ://gist.github.com/bluemont/e304e65e7e15d77d3cb9

设计文档中的更多细节:https ://github.com/plataformatec/devise/tree/rails4#configuring-controllers

于 2013-07-19T00:21:15.560 回答