私のRailsアプリでは、各ユーザーには多くのグラフがあり、各グラフには多くの追跡可能要素があり、各追跡可能要素には多くのポイント(値と時間)があります。ユーザーは、さまざまなトラッカブルを追加(または削除)して、プロットとcreated_atの時間を比較できます。ユーザーは、グラフの表示ページに移動してフォームを送信し、グラフが持つ追跡可能な各ポイントに新しいポイントを作成できます。
GraphControllerのshowアクションで、現在のグラフのすべての追跡可能ファイルを@trackablesに割り当て、views / graphs / showで各| trackable |をループします。追跡可能な新しいポイントを作成しようとします。
===============
編集:これは、グラフの表示ページにアクセスしようとしたときにブラウザで発生するエラーです
NoMethodError in Graphs#show undefined method `trackable_points_path'for#<#: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
views / graphs / 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"
私はこれらすべてに不慣れであり、私の試みはうまくいかないようです。どんな助けや提案された読書も大歓迎です!ありがとう
ここでの問題は、Trackable
フォームで直接オブジェクトにアクセスしているという事実だと思いますがTrackable
、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
ファイル内の個別のリソースとして定義できますが、これにより、コントローラーの基になるロジックが変更される可能性があります。
resources :graphs do
resources :trackables do
resources :points
end
end
resources :trackables do
resources :points
end
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加