0
我正在寻找简化基于thr对象名称的link_to
路径,并且正在研究重构多个自定义操作。Rails - link_to基于对象名称的路径+重构多个自定义动作
我已经设法让它在下面工作。
我觉得这是“un-rails”,并认为有更好的方法来执行此操作。 基于迭代,例如menu.name
,它将转到URL例如tech/oil-change
。
我的控制器充满了十二个动作,我期待DRY以某种方式。
def oil_change
@techs = Tech.joins(:services).where(services: { name: 'oil change'})
end
def muffler
@techs = Tech.joins(:services).where(services: { name: 'muffler'})
end
etc...
etc...
etc...
etc...
路线
我的路线如下所示:
resources :techs, :only => [:index, :show], shallow: true do
resources :cars, only: [:new, :create]
collection do
get 'oil-change'
get 'brakes'
get 'muffler'
etc....
etc....
etc....
etc....
etc....
end
end
耙路线
oil-change_techs/techs#oil-change
blowout_techs/techs#brakes
muffler_techs/techs#muffler
etc...._techs/techs#etc....
etc...._techs/techs#etc....
etc...._techs/techs#etc....
有没有一种迭代局部变量menu
(menu.name
)被包含在路径中的方法,而不是我现在拥有它的黑客入侵方式?同样基于该迭代,允许link_to
执行单个控制器操作而不是具有多个控制器操作?
请知道你看到的上述工作,但我期待简化和DRY解决方案,如果可能的话。
任何帮助将不胜感激。
感谢您的答复。你的控制器缺少括号。我重新启动服务器,并得到以下错误:'未定义的方法'techs_part_path'为#<#:0x007fd110554338>请指教。 –
@captainawesome你可以运行'耙路线'并告诉我什么*路径*创建?我写了一个猜测的道路。请从'rake routes'确认它 –
我的意思是说你的'view'缺少括号。 –