Rails:获取父资源

时间:2009-03-22 15:24:02

标签: ruby-on-rails routing

我有一个这样的config / routes.rb文件:

  map.resources :categories, :shallow => true do |cat|
    cat.resources :entries,  :member => {:yes => :post, :no => :post }
  end

我的目标是使用yes和no作为修改我的条目的按钮(它就像一个游戏,是和否是条目的答案)。

我希望当我点击是或否时,我会回到类别/:category_id / entries,因为我有漂亮的布局等等。

问题是我从entries /:entry_id到了yes方法所以我丢失了这个条目所在的类别ID,我不知道如何获得该类别的链接。

我想我可以尝试不使用:浅参数,所以我得到了完整的路径,但我可能会进一步在hierarqui(条目可能有评论),我想学习这个简单的问题如何管理这种情况。

3 个答案:

答案 0 :(得分:3)

如果您的条目是您的类别的子资源,那么模型之间可能存在父子关系,对吧?如果是这样,那么你可以使用:

redirect_to category_entries_path(@entry.category)

在您的yesno方法中。

答案 1 :(得分:0)

在按钮中,您可以指定类别:

link_to "Yes", yes_entry([@category, Entry.new]), :method => :post

我不确定它是否有效,否则你可以尝试:

link_to "Yes", yes_entry(Entry.new, :category_id => @category), :method => :post

答案 2 :(得分:0)

你试过resource_controller吗?我没有使用:浅选项(这个解决方案可能没有它),但是resource_controller支持某种多态资源(你可以使用url:/ entries,/ category / 3 / entries,/ whatever / 12 / entries等等)。然后,您可以使用以下内容生成条目的URL:

<%= link_to 'Entries', collection_path %> 

但是如果你的'是'和'否'方法,你只需要添加:

redirect_to collection_path

回应'是'和'否'的行动。