<%= current_user.role %> 在 Rails 4 中计算结果为空

Posted

技术标签:

【中文标题】<%= current_user.role %> 在 Rails 4 中计算结果为空【英文标题】:<%= current_user.role %> evaluates to nothing in Rails 4 【发布时间】:2015-06-05 18:53:00 【问题描述】:

我正在制作一个 Rails 应用程序并试图让用户的角色显示在视图上。我为此使用的代码是:

<%= current_user.role %>

它不会评估任何东西。

我正在使用设计进行用户注册,我的注册视图如下:

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
    <%= devise_error_messages! %>

    <div class="login-field">
      <%= f.email_field :email, :placeholder => "Email"  %>
    </div>

    <div class="login-field">
      <%= f.password_field :password, autocomplete: "off", :placeholder => "Password (8 character min)"  %>
    </div>

    <div class="login-field">
        <%= f.text_field :firstname, :placeholder => "First Name"  %>
    </div>

    <div class="login-field">
        <%= f.text_field :lastname, :placeholder => "Last Name"  %>
    </div>

    <div class="login-field">
        <%= f.text_field :phone, :placeholder => "Phone Number"  %>
    </div>

    <%= f.select(:role, ['Role 1', 'Role 2', 'Both']) %>

    <br>

    <div><%= f.submit "Signup" , :class => "btn btn-success btn-lg" %></div>

  <% end %>

  <%= render "devise/shared/links" %> 

我有一种感觉,我在提交表单时做错了,但无法弄清楚它是什么。任何帮助表示赞赏

【问题讨论】:

【参考方案1】:

你可以把它放在createaction的顶部:

return render text: params.inspect # get what the form sended

和或

return render text: create_params # get what the values you permitted

这样您将获得您发送的数据以及是否符合您的预期。

【讨论】:

【参考方案2】:

您应该覆盖设计注册中的sign_up_params。创建继承自 Devise::RegistrationsControllerRegistrationsController 后,您可以覆盖 sign_up_params

class RegistrationsController < Devise::RegistrationsController

  private

  def sign_up_params
    params.require(:user).permit(:first_name, :last_name, :email, :phone, :role ... any other attributes)
  end

end

您还需要更改 routes.rb 以指向新创建的控制器:

devise_for :users, controllers: registrations: 'registrations'

【讨论】:

我按照你说的做了,但它仍然没有产生任何东西。 是否设置了phone属性? 它似乎唯一的设置电子邮件和密码 尝试调试看看它是否在使用新的控制器。确保您修改了 routes.rb 中的 devise_for 我更改了 routes.rb 中的 devise_for。抱歉,我是个 Rails 菜鸟,如何调试以检查我是否使用新控制器?

以上是关于<%= current_user.role %> 在 Rails 4 中计算结果为空的主要内容,如果未能解决你的问题,请参考以下文章

Linux内核分析实验二

WEB开发经验点滴

X-005 FriendlyARM tiny4412 uboot移植之时钟初始化

X-004 FriendlyARM tiny4412 uboot移植之点亮指路灯

X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件

X-007 FriendlyARM tiny4412 u-boot移植之内存初始化