用户有一组他们的'偏好'。资源应该是单一的,因为用户只有一组他们应该知道的偏好。名称应该是复数,因为该资源代表了过多的设置。我现在遇到路由问题,我相信它源于此。
我已宣布路线,
resource 'preferences', only: [:show, :edit, :update] do
resources :weight_based_rates
end
运行rake routes
的输出包含以下条目
preferences_weight_based_rates GET /preferences/weight_based_rates(.:format) weight_based_rates#index
POST /preferences/weight_based_rates(.:format) weight_based_rates#create
new_preferences_weight_based_rate GET /preferences/weight_based_rates/new(.:format) weight_based_rates#new
edit_preferences_weight_based_rate GET /preferences/weight_based_rates/:id/edit(.:format) weight_based_rates#edit
preferences_weight_based_rate GET /preferences/weight_based_rates/:id(.:format) weight_based_rates#show
然后,在一个相关的部分我宣布一个这样的形式,
= form_for [@preference, WeightBasedRate.new], :remote => true do |f|
最后,我在Preferences#show
中得到了一个'NoMethodErrorundefined method `preference_weight_based_rates_path' for #<#<Class:0x0000000572d2b0>:0x000000057b4800>
请注意,未定义的方法以单数形式涉及“首选项”。
也许我背叛了一定程度的天真,但这并不是Rails的魔力第一次让我失望:是否根据对模型奇点的假设构建一个单数名称?或者可能基于我传递实例的事实?导轨是否无法将碎片放在一起?我是否只是简单地安排了form_for的论据?
铁路混乱,还是我?