0

「祖先」の宝石の使い方を学ぼうとしています。Railscastで関連するエピソードを見て、コードを入手しました。messageテーブルは正常に機能します。しかし、私はそれをと呼ばれる新しいテーブルで複製しようとしていますlocations。私はすべてのコードの名前をコピーして変更しました(私は信じています)。

最初の場所を作成しました。しかし、に移動すると、NilClass: Class_form.html.erb`行のmodel_name'がlocalhost:3000/locations取得されます。undefined methodfor

<%= 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
4

0 に答える 0