Ruby on rails RubyonRails-如何使关系在路由、控制器和视图中工作?有很多,属于
我正在努力让rails中的关系正常运行 我有一个用户,画廊,评论模型Ruby on rails RubyonRails-如何使关系在路由、控制器和视图中工作?有很多,属于,ruby-on-rails,associations,relationship,has-many,belongs-to,Ruby On Rails,Associations,Relationship,Has Many,Belongs To,我正在努力让rails中的关系正常运行 我有一个用户,画廊,评论模型 class Gallery has_many :comments belongs_to :user end class User has_many :comments has_many :galleries end class Comment belongs_to :gallery belongs_to :user end 现在,我应该在路由、控制器和视图中做些什么来链接这一切? 请帮帮我
class Gallery
has_many :comments
belongs_to :user
end
class User
has_many :comments
has_many :galleries
end
class Comment
belongs_to :gallery
belongs_to :user
end
现在,我应该在路由、控制器和视图中做些什么来链接这一切?
请帮帮我?找出答案是相当令人困惑的。如果可以,我不希望它像railscast中那样嵌套,但我希望每个模型都可以,例如gallery,我可以输入用户,例如comment,我可以找到并输入galleryid和用户ID
我现在完全被遗忘了,不知道该怎么办。请提供一些帮助。谢谢。这是一个复杂的问题,不能简单地告诉你怎么做,但我会尽力帮你一点忙。Zippie的建议很好,你应该通过一个教程来了解不同类型的关系 在数据库中,您需要:
create_table :gallery do |t|
t.user_id
end
create_table :comments do |t|
t.gallery_id
t.user_id
end
这些是Rails将用于匹配您的模型的外部索引(外部索引位于指定归属关系的模型中)
至于您的路线,没有单一的解决方案,但您可能希望嵌套它们,以便可以执行/users/comments或/gallers/comments:
resource :users do
resource :comments
end
resource :galleries do
resource :comments
end
您也可以简单地将它们分开:
resources :users, :galleries, :comments
在控制器中,创建新对象时,应从其所属的对象执行此操作:
@comment = current_user.comments.build(params[:comment])
例如,这会将注释的用户id设置为当前用户
在视图中,没有太大区别,只需在控制器中获取@comments变量,如下所示:
@comments = @gallery.comments
在你的视野中使用它
当您想要定义表单帮助器来创建新注释时,它可能不那么直观,例如:
<%= form_for([@gallery, @comment]) do |f| %>
...
<% end %>
...
我希望这有助于您入门。尝试通过本教程:非常感谢,这与我在这里所遵循的内容类似:,现在您至少已经了解了路线,我需要了解如何进行控制器和视图。我还得多学一点。