Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails-如何使关系在路由、控制器和视图中工作?有很多,属于_Ruby On Rails_Associations_Relationship_Has Many_Belongs To - Fatal编程技术网

Ruby on rails RubyonRails-如何使关系在路由、控制器和视图中工作?有很多,属于

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 现在,我应该在路由、控制器和视图中做些什么来链接这一切? 请帮帮我

我正在努力让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
现在,我应该在路由、控制器和视图中做些什么来链接这一切? 请帮帮我?找出答案是相当令人困惑的。如果可以,我不希望它像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 %>

...

我希望这有助于您入门。

尝试通过本教程:非常感谢,这与我在这里所遵循的内容类似:,现在您至少已经了解了路线,我需要了解如何进行控制器和视图。我还得多学一点。