0

これまでのところ、次の新しいコントローラーを作成しました。

rails g controller home settings

settings.html.erb では、パーシャルを表示して、1行追加するだけです:

<%= render "categories/index", :locals => {:categories => @categories} %>

したがって、私のcategories/_index.html.erbは次のようになり、機能しました:

<% for category in @categories do %>
 <tr>
 <td><%= category.typ %></td>    
 <td><%= link_to "Löschen", category,:class => 'btn btn-mini btn-danger', method: :delete, data: { confirm: 'Sind sie sicher?' } %></td>
  </tr>
  <% end %>
  <tr>
  <%= form_for Category.new do |f| %>
   <td> <%= f.text_field :typ, :class => "input-small" %></td>    
   <td><%= f.submit "Speichern", :class => 'btn btn-mini btn-success' %></td>
</tr>
<% end %>
</table>
</div>

しかし、localhost:3000/home/settings を開くと、次のエラーが表示されます。

Home#settings の NoMethodError

C:/Sites/rublesql/app/views/categories/_index.html.erb を表示し、10 行目が発生した場所:

undefined method `each' for nil:NilClass 抽出されたソース (10 行目あたり):

7:     <th></th>
8:   </tr>
9: 
10:  <% for category in @categories do %>
11:   <tr>
12:     <td><%= category.typ %></td>    

だから私の質問は、私は何を間違えたのですか?

カテゴリ コントローラ:

class CategoriesController < ApplicationController
def index
    @categories = Category.all
end
def destroy
    @category = Category.find(params[:id])
    @category.destroy
    redirect_to categories_path
end
def create
@category = Category.new(params[:category])
@category.save
redirect_to categories_path
end
end
4

2 に答える 2