2015-02-05 5 views
2

레일을 사용하는 법을 배우려합니다. 나는 다음과 같음 http://guides.rubyonrails.org/getting_started.html 나는 관련된 모델을 추가했다. 하지만 새로운 이벤트를 만들 때도 똑같이 복제합니다.중복 레코드를 만드는 레일

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

이가있다 : 여기

class Event < ActiveRecord::Base 
    belongs_to :category 

end 

내가 특정 범주에 이벤트를 저장하기 위해 사용하고있는 형태이다 : 여기서 끝

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 

모델입니다 쇼 코드보기 :

<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 %>'는 형태로 무엇입니까? 어쩌면': name'은': event'의 올바른 insted입니다. 그렇다면'def event_param'을'params.require (: event) .permit (: name, : genus, : description)'와 같이 변경해야합니다. – shoji

+0

다음과 같은 범주 모델이 필요합니다. has_many : events – ljnissen

+0

@ljnissen 알겠습니다. –

답변

0

좋아 가이드를 ... 다음에 내가 잘못 무엇인지 알게되었습니다. 그것은 < %이었다 @ category.events.each do | event | %> in 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> 

내가 이해하는 것은 <%는 @ 카테고리 렌더링 =/이벤트 %이>이 페이지로 리디렉션 것입니다. 데이터를 두 번 쿼리하고있었습니다.

내가 맞지 않으면 수정 해주세요.

그러나 나는 왜 이것이 중복 레코드를 생성하는지 이해하지 못합니까?