これまでのところ、次の新しいコントローラーを作成しました。
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