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

事情是当我创建记录时..它会创建重复条目并删除记录它会删除这两个条目。

我无法弄清楚我的代码有什么问题。我只是按照指南..

这就是记录重复的方式

4

1 回答 1

0

好的,我发现出了什么问题。它是 <% @category.events.each 做 |event| _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>

我的理解是当 <%= render @category/events %> 重定向到这个页面。它正在查询数据两次。

如果我不正确,请纠正我?

但我不明白为什么会产生重复记录?

于 2015-02-05T15:49:27.537 回答