Rails erb添加额外的模板而没有id

时间:2017-12-21 18:42:32

标签: ruby-on-rails templates render erb nested-routes

Link to image of what I'm talking about

我的问题是我的列表底部有一个额外的模板没有项ID。单击时,图标将删除它们旁边的项目。即使没有与之相关的项目,也会显示底部图标。

这是我的节目html.erb

<div class="row">
<div class="col-md-8">
    <div class="media">
        <br />
        <div class="media-body">
            <h3><%= @user.email %></h3>
            <br />
            <%= render partial: 'items/form', locals: {user: @user} %>
            <div class="media">
                <div class="media-body">
                    <h4 class="media-heading">
                        <ul>
                            <%= render @items %>
                        </ul>    
                    </h4>
                </div>
            </div>
        </div>
    </div>
</div>

这是我的_item模板

<li><%= item.name %><%= link_to "", [current_user, item], remote: true, method: :delete, class: 'glyphicon glyphicon-ok' %></li>

这是我的物品控制器

class ItemsController < ApplicationController
def create
  @item = Item.new(item_params)
  @item.user = current_user

  if @item.save
    flash[:notice] = "Item was saved."
    redirect_to user_path(current_user.id)
  else
    flash.now[:alert] = "There was an error saving the item. Try again."
    redirect_to user_path(current_user.id)
  end
end

def destroy
  @item = Item.find(params[:id])

  if @item.destroy
    flash[:notice] = "Item deleted"
    redirect_to user_path(current_user.id)
  else
    flash.now[:alert] = "Error deleting the item."
    redirect_to user_path(current_user.id)
  end
end

private
def item_params
  params.require(:item).permit(:name)
end

这是我的用户控制器

class UsersController < ApplicationController

  def show
    @user = current_user
    @item = Item.new
    @items = @user.items
  end
end

这些项目属于用户,并且在用户下具有嵌套路由。悬停在上面的最后一个复选标记(我要摆脱的那个)显示链接... / users / 6 / items,而其他项目旁边显示... / users / 6 / items / 40

以下是项目的_form.html.erb:

<%= form_for [user, user.items.new] do |f| %>
  <%= f.text_field :name, class: 'form-control', placeholder: "Enter your to-do item", value: nil, required: true %>
  <div class="form-group">
    <%= f.submit "Save", class: 'btn btn-success' %>
  </div>
<% end %>

1 个答案:

答案 0 :(得分:0)

删除

@item = Item.new

来自用户控制器中的show action。

class UsersController < ApplicationController

  def show
    @user = current_user
    @items = @user.items
  end
end