用于“myparamsimtryingtopass”的未定义方法`symbolize_keys':字符串

时间:2016-03-26 07:06:47

标签: ruby-on-rails

所以我对轨道上的红宝石仍然很新,我想在这里做的很简单。我试图创建一个类似Facebook的应用程序,如果你点击一个帖子的个人资料图片,它将引导你到用户个人资料页面。我刚刚在在线课程中做了一些非常相似的事情,但我似乎无法让这个在另一个视图中工作。以下是我在标题栏中使用的内容。

导航条

<nav class="navbar navbar-default navbar-fixed-top">
  ......
  <li><%= link_to "Show Profile" , 
          user_profile_path(current_user.id, current_user.full_name) %></li>
   ....
</nav>

此代码可用,并将我引导至相应的用户个人资料页面。

路线

Rails.application.routes.draw do
  ....
  root 'statuses#index'

  get '/:id/:full_name', to: 'profile#show' , as: :user_profile
  .....
end

问题视图

<div class="page-header">
....
<% @statuses.each do |status| %>
    <div class="row">
      <div class="col-md-1">
        <%= link_to image_tag(status.user.avatar.url(:thumb),
            user_profile_path(status.user.id, status.user.full_name)) %>
        //the above is what gives me the error in the title.
      </div>
<% end %>

我已经完成了我的公平分享搜索,如果我在接受hashkeys时传入字符串似乎会发生此错误?我不完全确定。如果有更好的方法,我应该使用,请告诉我,因为我是一个非常新的和开放的学习。

1 个答案:

答案 0 :(得分:2)

您对link_to帮助器的使用有误。而不是:

 <%= link_to image_tag(status.user.avatar.url(:thumb), user_profile_path(status.user.id, status.user.full_name)) %>
                                          ^first argument                            ^second argument                                   

使用:

 <%= link_to user_profile_path(status.user.id, status.user.full_name) do %>
     <%= image_tag(status.user.avatar.url(:thumb)) %>
 <% end %>

如您所见,您将 _path 帮助器作为 image_tag 的第二个参数传递,这是错误的。 image_tag 的第二个参数应该是哈希值,这就是为什么会出现undefined method 'symbolize_keys' for错误。