Ruby on rails 如何链接两个表的数据?

Ruby on rails 如何链接两个表的数据?,ruby-on-rails,Ruby On Rails,我有两个表,生成器和结果 生成器有许多结果 结果属于生成器 我怎样才能有一个页面,显示生成器的所有值和结果?在我的结果控制器创建中,我必须链接生成器id吗?我已经尝试过了,但是当我尝试创建属于该生成器的新结果时,它会给我一个错误 例如localhost:3000/generator/3/results/new,单击“创建”后,会出现以下错误: 找不到没有ID的生成器。 我收到了一些建议,要求我创建一个新的控制器。如果是这样,我应该如何将@generator和@result传递给它 发电机控制器

我有两个表,生成器和结果

生成器有许多结果 结果属于生成器

我怎样才能有一个页面,显示生成器的所有值和结果?在我的结果控制器创建中,我必须链接生成器id吗?我已经尝试过了,但是当我尝试创建属于该生成器的新结果时,它会给我一个错误

例如localhost:3000/generator/3/results/new,单击“创建”后,会出现以下错误:

找不到没有ID的生成器。

我收到了一些建议,要求我创建一个新的控制器。如果是这样,我应该如何将@generator和@result传递给它

发电机控制器 结果模型
我会在控制器中创建一个变量,如下所示:

@generators = Generator.all
  generator = Generator.find(params[generator_id])
  generator.results.build(result_params)
那么在你看来

<% @generators.each do |g| %>
  <% g.results.each do |r| %>
    <% debug r %>   
  <% end %>
<% end %>


听起来,您试图取出所有生成器的代码都不正确。

您试图实现嵌套资源

您需要将路由修改为类似这样的内容

  resources :generators do
    resources :results
  end
这样您就有了generator_id,因此您可以将控制器代码修改为如下内容:

@generators = Generator.all
  generator = Generator.find(params[generator_id])
  generator.results.build(result_params)

好心的,你能粘贴一些模型和控制器的代码吗..控制器中似乎有问题..你想在哪里显示这些数据?我已经粘贴了。我想以生成器索引的形式显示这些数据,在这里我可以显示所有生成器的值和所有属于该生成器的结果。我有点困惑。。。似乎你没有完全按照“Rails方式”做事。您不应该在生成器窗体上显示所有生成器的值。所有生成器的值都应显示在索引页上。我在生成器控制器索引中的实际代码只是`@Generator=Generator.all`但我希望此生成器/索引页也显示所有生成器及其结果。因为稍后,我将有另一个表调用用户,每个用户都可以查看他们拥有的任何生成器数据,并从中分析他们的结果n等等。。。这就是为什么我需要有一个页面,让我把生成器的所有值和结果放在一起。嗨,我尝试过这个方法。g、 results.ncbi_ref_seq,但我得到了未定义的方法ncbi_ref_seq。NCBI_ref_seq是属于结果的属性。这是我想在m pageWell中显示的数据之一,
g.results
可能是一个数组,而不是单个模型。如果您想显示结果的某些部分,可能需要另一个循环来迭代结果。根据你的回答,我会更新我的答案,但这似乎是另一个问题……阿德瓦克:结果的值都是空的。但当我进入locahost:3000/结果时,它们就在那里。。。。我遵循了你的方法,但它们没有显示在locahost:3000/generators
def create generator=generator.find(params[:generator])result=result.new(result_params)result.generate_result(result_params)@result=generator.results.build(result_params)
中,如果我的resultcontroller索引代码是
def create@result=result.new(result\u-params)@result.generate\u-result(result\u-params)end,则生成结果(result\u-params)end时出错。这可以正常工作,但在视图中,我无法获得结果的值。它们都是空的。我试着在concole结果中运行它。找到(1)n它给我生成器_id=nil。我如何解决这个问题?我的路线与你键入的路线相同。但在继续生成generator.results.build(result_params)之前,仍然会收到错误消息=(…)我需要有result_参数。我通过在我的模型中定义一些函数来获得值。erm result的原始代码
def create
-
@result=result.new
@result=@result.generate_result
您为的表单_看起来像[@generator,@result]你的post请求要去哪里?post/generators/:generator\u id/results?你说的post请求要去哪里是什么意思?我是说我怎么知道请求要去哪里?o.oIf如果你运行的是rails服务器,在按下“创建”按钮后(也就是发生错误时)在您的控制台/终端/shell中,您是否看到
启动的POST/results
或(通过示例)
启动的POST/generators/1/results
  generator = Generator.find(params[generator_id])
  generator.results.build(result_params)