2015-02-05 109 views
2

我想學習使用rails。我正在關注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

重複鍵是什麼?事件ID?而且,在表單中的「<%= f.text_field:event%>」是什麼?也許'':''是正確的':event'。如果是這樣,你應該改變'def event_param'如下:'params.require(:event).permit(:name,:genus,:description)'。 – shoji 2015-02-05 13:52:34

+0

你還需要一個類別模型,說:has_many:events – ljnissen 2015-02-05 14:08:52

+0

@ljnissen我有它:) – 2015-02-05 14:29:46

回答

0

好吧,我發現了什麼是錯誤的。這是<%@ category.events.each do | event | %> line in _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> 

我的理解是,當<%=渲染@類別/事件%>重定向到該頁面。 這是查詢數據兩次。

糾正我,如果我不正確?

但我不明白爲什麼這會產生重複記錄?