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

问题描述 投票:0回答:1

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 %>
ruby-on-rails templates render erb nested-routes
1个回答
0
投票

去掉

@item = Item.new

来自用户控制器中的show动作。

class UsersController < ApplicationController

  def show
    @user = current_user
    @items = @user.items
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.