2015-02-05 3 views
2

Я пытаюсь научиться использовать рельсы. Я следующие http://guides.rubyonrails.org/getting_started.html Я добавил связанную модель. но когда я создаю новое событие ... он также дублирует его.Рельсы, создающие повторяющуюся запись

class EventsController < ApplicationController 

def create 
    @category = Category.find(params[:category_id]) 
    @event = @category.events.create(event_params) 

    redirect_to category_path(@category) 
end 

def destroy 
    @category = Category.find(params[:category_id]) 
    @event = @category.events.find(params[:id]) 
    @event.destroy 
    redirect_to category_path(@category) 
end 
private 
def event_params 
    params.require(:event).permit(:event, :genus, :description) 
end 

конец

Вот модель:

class Event < ActiveRecord::Base 
    belongs_to :category 

end 

Вот форма, я использую, чтобы сохранить событие в конкретной категории:

<%= form_for ([@category, @category.events.build]) do |f| %> 
<p> 
    <%= f.label :name %><br> 
    <%= f.text_field :event %> 
</p> 
<p> 
    <%= f.label :genus %><br> 
    <%= f.text_field :genus %> 
</p> 
<p> 
    <%= f.label :description %><br> 
    <%= f.text_area :description %> 
</p> 
<p> 
    <%= f.submit %> 
</p> 

Это показать код просмотра:

<p> 


<strong>Title:</strong> 
    <%= @category.name %> 
</p> 

<p> 
    <strong>Text:</strong> 
    <%= @category.key %> 
</p> 

<h2>Events</h2> 
<%= render @category.events %> 

<h2> 
    Add Event 
</h2> 
<%= render 'events/form' %> 


<%= link_to 'Back', categories_path %> 

Вещь, когда я создаю запись .. создает двойную запись и удалять запись удаляет обе записи.

Я не могу понять, что случилось с моим кодом. Я просто следовал руководство ..

This is how records are duplicated

+0

Какой ключ дублируется? идентификатор события? И что такое '<% = f.text_field: event%>' в форме? Может быть, ': name' правильно установлен': event'. Если это так, вы должны изменить 'def event_param', как показано ниже:' params.require (: event) .permit (: name,: genus,: description) '. – shoji

+0

Вам также нужна категория-модель, которая гласит: has_many: events – ljnissen

+0

@ljnissen У меня есть :) –

ответ

0

Ok, я узнал, что было не так. Это было <% @ category.events.each do | event | %> line в _event.html.erb Создавалось дублирующее представление. Спасибо всем за помощь

<% @category.events.each do |event| %> 
    <p> 
    <strong>Event Name:</strong> 
    <%= event.name %> 
    </p> 

    <p> 
    <strong>Genus:</strong> 
    <%= event.genus %> 
    </p> 
    <p> 
    <strong>Description:</strong> 
    <%= event.description %> 
    </p> 

    <p> 
    <%= link_to 'Destroy Event', [event.category, event], method: :delete, data: {confirm: 'Are you sure?'} %> 
    </p> 
<% end > 

Это должно быть так:

<p> 
    <strong>Event Name:</strong> 
    <%= event.name %> 
    </p> 

    <p> 
    <strong>Genus:</strong> 
    <%= event.genus %> 
    </p> 
    <p> 
    <strong>Description:</strong> 
    <%= event.description %> 
    </p> 

    <p> 
    <%= link_to 'Destroy Event', [event.category, event], method: :delete, data: {confirm: 'Are you sure?'} %> 
    </p> 

Я понимаю, что когда <% = оказывают @ категорию/События%> перенаправляет на этой странице. Он запрашивал данные два раза.

Исправить меня, если я не прав?

но я не понимаю, почему это было создание повторяющихся записей?

Смежные вопросы