0

我得到错误

undefined method `favorite_relationships_path'

当我显示此表单时:

<%= form_for(current_user.favorite_relationships.build(lesson_id: @lesson.id),
             remote: true) do |f| %>
  <div><%= f.hidden_field :lesson_id %></div>
  <%= f.submit "Favorite", class: "btn btn-large btn-primary" %>
<% end %>

我不确定为什么。我有一个名为 favorite_relationships_controller.rb 的控制器和一个带有代码的模型文件 favorite_relationship.rb

class FavoriteRelationship < ActiveRecord::Base
  attr_accessible :lesson_id
  belongs_to :user
  belongs_to :lesson
end

我的用户模型也有:

  has_many :favorite_relationships
  has_many :lessons, :through => :favorite_relationships

我真的不确定为什么我会收到那个错误。帮助将不胜感激。

4

2 回答 2

2

定义控制器、动作和视图是不够的。您需要定义路由config/routes.rb将 URL 连接到您的控制器/操作。在路由文件中定义 RESTful 资源resources :favourite_relationships是导致 Rails 生成*_path*_url助手的原因;在您这样做之前,请求无法到达您的应用程序,您的应用程序也无法根据您的模型生成路由。

您的路线文件应如下所示:

MyApp::Application.routes.draw do
  resources :favourite_relationships
end

这会生成 RESTful 资源所需的典型“CRUD”路由:

favourite_relationships     GET    /favourite_relationships(.:format)          {:action=>"index", :controller=>"favourite_relationships"}
                            POST   /favourite_relationships(.:format)          {:action=>"create", :controller=>"favourite_relationships"}
 new_favourite_relationship GET    /favourite_relationships/new(.:format)      {:action=>"new", :controller=>"favourite_relationships"}
edit_favourite_relationship GET    /favourite_relationships/:id/edit(.:format) {:action=>"edit", :controller=>"favourite_relationships"}
     favourite_relationship GET    /favourite_relationships/:id(.:format)      {:action=>"show", :controller=>"favourite_relationships"}
                            PUT    /favourite_relationships/:id(.:format)      {:action=>"update", :controller=>"favourite_relationships"}
                            DELETE /favourite_relationships/:id(.:format)      {:action=>"destroy", :controller=>"favourite_relationships"}
于 2012-04-28T22:47:27.723 回答
2

Rails 有路线的助手_path_url助手,它们设置在config/routes.rb. 您需要确保已为FavouriteRelationshipController;定义了路线。就像是:

resources :favourite_relationships

您可以使用该rake routes命令检查为您的应用程序定义的路由。

您可以在Rails Routing from the Outside In指南中找到有关路由的更多信息。

于 2012-04-28T22:48:30.783 回答