加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – rails中的`stringify_keys’是什么,以及在出现

发布时间:2020-12-17 04:40:02 所属栏目:百科 来源:网络整理
导读:在我的应用程序的部分文件中,我有以下代码片段用于显示用户导航(通过Devise): – ul class="nav pull-right" % if user_signed_in? % li %= current_user.email do % i class=" icon-user icon-black"/i % end % /li li %= link_to "Your Links",profiles_i
在我的应用程序的部分文件中,我有以下代码片段用于显示用户导航(通过Devise): –
<ul class="nav pull-right">
  <% if user_signed_in? %>
      <li>
        <%= current_user.email do %>
        <i class=" icon-user icon-black"></i>
        <% end %>
      </li>
     <li>
       <%= link_to "Your Links",profiles_index_path do %>
       <i class=" icon-user icon-black"></i>
       <% end %>
     </li> 
     <li>
       <%= link_to "Sign out",destroy_user_session_path,:method => 'delete' do %>
       <i class=" icon-user icon-black"></i> 
       <% end %>
    </li>

   <% else %>
     <li>
      <%= link_to "Login",new_user_session_path do %> 
      <i class=" icon-lock"></i>  
      <% end %>
    </li>
    <li>
      <%= link_to "Sign up",new_user_registration_path do %>
      <i class=" icon-home"></i>
      <% end %>
    </li>
  <% end %>
</ul>

但我得到一个错误说: –

undefined method `stringify_keys' for "/users/sign_in":String

现在我的问题是: –

>一般来说`stringify_keys’是什么?
>我如何在我的代码中解决这个问题?

谢谢…

解决方法

1)stringify_keys是一个在哈希上调用的方法,用于将其键从符号转换为字符串.它是由Rails添加的 – 它不是标准的Ruby方法. Here it is in the docs.
{:a => 1,:b => 2}.stringify_keys # => {"a" => 1,"b" => 2}

2)这意味着你的代码在某个期望散列的地方传递“/ users / sign_in”.仔细检查显示您正在混合和匹配两种形式的link_to:

# specify link contents as an argument
link_to "The text in the link","/path/to/link",some: "options"

# specify link contents in a block
link_to "/path/to/link",some: "options" do
  "The text in the link"
end

正如您所看到的,您正在尝试两者:

<%= link_to "Sign out",:method => 'delete' do %>
  <i class=" icon-user icon-black"></i> 
<% end %>

并且Rails期望块形式中的第二个参数是选项哈希,因此它会调用stringify_keys,这会导致您的错误.

将这些链接更改为以下内容:

<%= link_to destroy_user_session_path,:method => 'delete' do %>
  <i class=" icon-user icon-black"></i> Sign out 
<% end %>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读