「祖先」の宝石の使い方を学ぼうとしています。Railscastで関連するエピソードを見て、コードを入手しました。message
テーブルは正常に機能します。しかし、私はそれをと呼ばれる新しいテーブルで複製しようとしていますlocations
。私はすべてのコードの名前をコピーして変更しました(私は信じています)。
最初の場所を作成しました。しかし、に移動すると、NilClass: Class_form.html.erb`行のmodel_name'がlocalhost:3000/locations
取得されます。undefined method
for
<%= form_for @location do |f| %>
routes.rb
:
Messenger::Application.routes.draw do
resources :locations
resources :messages
root :to => 'messages#index'
end
_form.html.erb
:
<%= form_for @location do |f| %>
<%= f.error_messages %>
<%= f.hidden_field :parent_id %>
<p>
<%= f.label :locname, "New Location" %><br />
<%= f.text_area :locname, :rows => 8 %>
</p>
<p><%= f.submit "Post Location" %></p>
<% end %>
index.html.erb
:
<% title "Locations" %>
<%= nested_locations @locations.arrange(:order => :created_at) %>
<%= render "form" %>
locations_controller.rb
:
class LocationsController < ApplicationController
def index
@locations = Location.scoped
@location = Location.new
end
def show
@location = Location.find(params[:id])
end
def new
@location = Location.new(:parent_id => params[:parent_id])
end
def create
@location = Location.new(params[:location])
if @location.save
redirect_to locations_url
else
render :new
end
end
def destroy
@location = Location.find(params[:id])
@location.destroy
redirect_to locations_url
end
終わり
locations_helper.rb
:
module LocationsHelper
def nested_locations(locations)
locations.map do |location, sub_locations|
render(location) + content_tag(:div, nested_locations(sub_locations), :class => "nested_locations")
end.join.html_safe
end
end