我正在研究类似Pinterest的应用程序来学习Rails,用户可以在其中收集项目并将其添加到集合中。
我有一个“添加到集合”按钮,它打开一个模式,其中包含用户所有集合的列表。这适用于单个项目显示页面,但不适用于我的项目索引页面(列出已发布的所有项目)。
这是我的收藏控制器:
def index
@item = Item.find(params[:item_id])
@selected_collections = selected_collections(@item.id)
@collections = current_user.collections
respond_to do |format|
format.js {
render
}
end
end
我的项目控制器:
def index
@items = Item.all.order(created_at: :desc).paginate(:page => params[:page], :per_page => 20)
@collections = current_user.collections
@selected_collections = selected_collections(item.id)
end
def show
@item = Item.find_by_id(params[:id])
return render_not_found if @item.blank?
@collections = current_user.collections
@selected_collections = selected_collections(@item.id)
end
这是我的添加到收藏按钮,应该为索引上的每个项目显示:
<%= link_to "+ Add", item_collections_path(item, format: :js), class: 'btn btn-secondary btn-30', data: {toggle: 'modal', target: '#CollectionModal'}, remote: true, format: :js %>
对应模式的一部分:
<div class="modal-body">
<%= render 'collections/collections_list', :collections=>@collections, :selected_collections=>@selected_collections %>
</div>
_collection_list.html.erb
<div id="collection_list">
<% @collections.each do |collection| %>
<%= render 'collections/collection_checkbox', collection: collection, selected_collections: selected_collections %>
<% end %>
<%= render 'collections/collection_checkbox', collection: Collection.new, selected_collections: selected_collections %>
<div style='display: none;' class="new_collection_template">
<%= render 'collections/collection_checkbox', collection: Collection.new, selected_collections: selected_collections %>
</div>
_collection_checkbox.html.erb
<div class="form-check">
“&lt;%='checked'if selected_collections.include?(collection.id)%&gt;&lt;%=”disabled“除非collection.id%&gt;&gt; &lt;%= collection.collection_name%&gt;
<% if !collection.id %>
<input type="text" class="collection-name" placeholder="New collection" />
<% end %>
在我的索引上,我收到以下错误消息: 未定义的局部变量或方法`item' ItemsController:0x007f69022aefa0你的意思是? item_url items_url item_path @items
我认为这是因为我没有在索引上定义个人@item。在项目显示页面上,我只需在URL中找到参数。但是我怎样才能在索引上解决这个问题呢?
感谢您的帮助,非常感谢:)