我有一个 Fixer 模型,但与我的应用程序中的所有其他模型不同,它的路由无法正常工作,即使路由文件中有一个资源行。
问题是,当我尝试以多种方式链接到基本显示路径时,例如
<%= link_to "Fixer", fixer_path(@fixer) %>
或者
<%= link_to "Fixer", @fixer %>
或者
<%= link_to "Fixer", fixer_path(@fixer.id) %> # I got desperate
它链接到 /fixers.[:id](不是真实页面)而不是 /fixers/[:id]。不知道发生了什么,因为我的资源线在那里,并且显示是一个基本的资源操作,所有其他类似资源的模型似乎都工作得很好。
有任何想法吗?(如有必要,我可以添加更多代码。只是不确定什么是相关的)。
编辑——我的 rake 路线中的 Fixers 输出:
fixers GET /fixers(.:format) fixers#index
POST /fixers(.:format) fixers#create
new_fixer GET /fixers/new(.:format) fixers#new
edit_fixer GET /fixers/:id/edit(.:format) fixers#edit
GET /fixers/:id(.:format) fixers#show
PUT /fixers/:id(.:format) fixers#update
DELETE /fixers/:id(.:format) fixers#destroy
哇。在发布此消息后刚刚注意到,第 5 行缺少我所有其他模型的显示操作行之前的“修复器”。为什么会这样?我如何解决它?
编辑——我想通了!真是愚蠢的问题。出于某种原因,当我学习如何做这一切时,我都包含了一个资源行并在其上方添加了这一行:
match '/fixer', to: 'fixers#new'
当我取出那条线(因为它是多余的)时,问题就消失了。我想我在搞乱 Rails 路由自动魔法。他们确实使这些默认设置成为最佳选择。