在我的Rails应用程序中,每个用户都有许多图表,每个图表都有许多可跟踪的图表,每个用户都有很多点(有值和时间)。用户可以添加(或删除)不同的可跟踪到绘图与created_at时间。用户可以转到图表的显示页面并提交表单,为图表中的每个可跟踪的内容创建新点。
在GraphController show动作中,我将当前图形的所有可跟踪项分配给@trackables,然后在views / graphs / show中循环遍历每个| trackable |。并试图为可跟踪的新点。
===============
编辑:这是在尝试访问图表显示页面时在浏览器中引发的错误
图表中的NoMethodError#show undefined方法`trackable_points_path'对于#<#:0x007fbce1548008>
然后此行在浏览器的“提取的来源”中突出显示
- simple_form_for([trackable, trackable.points.build]) do |f|
=====
编辑2:这是我要求的路线
Rails.application.routes.draw do
devise_for :users
resources :graphs do
resources :trackables do
resources :points
end
end
root 'graphs#index'
end
模特
class Graph < ActiveRecord::Base
belongs_to :user
has_many :trackables
end
class Trackable < ActiveRecord::Base
belongs_to :graph
has_many :points
end
class Point < ActiveRecord::Base
belongs_to :trackable
end
图形和(更新的)点控制器
class GraphsController < ApplicationController
def show
@graph = Graph.find(params[:id])
@trackables = @graph.trackables.all
end
end
class PointsController < ApplicationController
def create
@trackable = Trackable.find(:trackable_id)
@point = @trackable.points.create(params.require(:point).permit(:value))
end
end
视图/图形/ show.html.haml
- @trackables.each do |trackable|
- simple_form_for([trackable, trackable.points.build]) do |f|
= f.input :value, input_html: { class: "form-control" }
= f.button :submit, class: "btn btn-default"
我对这一切都不熟悉,我的尝试似乎无法奏效。任何帮助或建议阅读将不胜感激!感谢
答案 0 :(得分:0)
我认为这里的问题是您直接在表单中访问UPDATE forums_posts p
SET post = REPLACE(post, 'hep', 'help')
WHERE EXISTS (SELECT 1
FROM Topics t
WHERE p.topic_id = t.tid AND t.forum_id = 3
);
对象这一事实,但如果没有访问Trackable
,您就没有真正的路径来处理Trackable
第一。 IE浏览器。您有Graph
和graph_trackables_path()
方法,但没有graph_trackable_points_path()
方法。
您可能应该将trackable_points_path()
对象传递给@graph
来电:
simple_form_for
否则,您可以将- simple_form_for([@graph, trackable, trackable.points.build]) do |f|
...
对象定义为Trackable
文件中的单独资源,但这可能会修改控制器中的基础逻辑。
routes.rb