“show”操作的路由错误

时间:2013-04-30 20:50:42

标签: ruby-on-rails ruby-on-rails-3

美好的一天,这里有很多关于这个问题的问题,但它们对我没有帮助。

对于signed_in用户,我的主页包含bookmarksfolders,其中包含属于此文件夹的书签。

home方法位于static_pages控制器中,如下所示:

def home
    if signed_in?
      @folder = current_user.folders.build
      @folders = current_user.folders.all
      @bookmark = current_user.bookmarks.build
      @bookmarks = current_user.bookmarks.all
    end
  end

这是home.html.erb

的一部分
<div class="span3">
        <table class="table table-hover table-condensed">
          <%= render @bookmarks %>
        </table>
      </div>
      <div class="span3">
        <table class="table table-hover table-condensed">
          <%= render @folders %>
        </table>
      </div>

所以我有2个表格,所有bookmarks和所有folders属于current_user

这是_folder.html.erb

folders文件夹中的views
<tr data-toggle="tooltip" data-placement="right" data-html="true">
  <td data-href="<%= folder %>" class="bookmark"><i class="icon-folder-close"></i>
    <%= link_to folder.name, folder_path %>
  </td>
  <td>
    <%= link_to '<i class="icon-edit"></i>'.html_safe, '#' %>
  </td>
  <td>
    <%= link_to '<i class="icon-trash"></i>'.html_safe, folder_path, method: :delete,
                data: {confirm: 'Are you sure?'},
                title: 'Delete folder ' + folder.name.to_s %>
  </td>
</tr>

folders_controller.rbshow方法:

def show
    @folder = Folder.find(params[:id])
    @bookmarks = @folder.bookmarks.all
  end

resources :folders也存在routes.rb

点击主页上的localhost:3000/folder/1,我只需要转到folder_name

这就是我得到的:

Routing Error
No route matches {:action=>"show", :controller=>"folders"}

rake routes中一切正常。

localhost:3000/folder/1放入浏览器时,它可以正常工作。

谢谢!

1 个答案:

答案 0 :(得分:2)

尝试更换:

 <%= link_to folder.name, folder_path %>

 <%= link_to folder.name, folder_path(folder) %>

因为你需要为show动作提供id。

您可以获得更多信息here