我有一个这样的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(条目可能有评论),我想学习这个简单的问题如何管理这种情况。
答案 0 :(得分:3)
如果您的条目是您的类别的子资源,那么模型之间可能存在父子关系,对吧?如果是这样,那么你可以使用:
redirect_to category_entries_path(@entry.category)
在您的yes
和no
方法中。
答案 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
回应'是'和'否'的行动。