0

用户有一组单一的“偏好”。资源应该是单一的,因为用户只有一组他们应该知道的偏好。该名称应该是复数,因为该资源代表过多的设置。我现在遇到路由问题,我相信它源于此。

我已经宣布路线,

  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 中得到一个 `NoMethodError

undefined method `preference_weight_based_rates_path' for #<#<Class:0x0000000572d2b0>:0x000000057b4800>

请注意,这种未定义的方法涉及单数形式的“偏好”。

也许我背叛了某种程度的天真,但这并不是 Rails 的魔力第一次让我失望:rails 是基于对我的模型的奇异性的一些假设来构造一个奇异的名称吗?或者也许基于我正在传递一个实例的事实?那么导轨是否无法将这些部件组合在一起?我只是对 form_for 的论点安排得很差吗?

轨道是混乱的,还是我?

4

0 回答 0