我正在尝试创建两个带有向上和向下箭头的小按钮,并根据它对我的产品进行排序。我有一个名为 Product 的模型,并且正在使用acts_as_list 来跟踪位置。
我是否在我的控制器中做这样的事情来创建路由?
resources :products
post "products/move_up"
post "products/move_down"
在我的产品控制器中
def move_up
@product.find(params[:id])
@product.move_higher
end
def move_down
@product.find(params[:id])
@product.move_lower
end
在我看来
<%= link_to "UP", products_move_up_path(product) %>
<%= link_to "Down", products_move_down_path(product) %>
但我做的不对。我不断收到错误
找不到 id=move_up 的产品
谁能帮我创建这种路由关系?
编辑:现在我收到错误
当你没想到时,你有一个 nil 对象!您可能期望有一个 Array 的实例。评估 nil.find 时发生错误
这是更多代码
查看代码
<ul>
<% item.children.each do |child| %>
<li id='category_<%=child.id %>'>
<span><%= child.name %></span>
<% child.products.position.each do |product| %>
<br /><%= link_to "UP", move_up_product_path(product), method: :put %> |
<%= link_to "Down", move_down_product_path(product), method: :put %> ----------<%= product.position %>
<%= product.name %>
<%= link_to 'Edit', edit_product_path(product) %>
<%= link_to 'Delete', product, :method => :delete, :confirm => "Are you sure you want to delete this product?" %> <br />
<% end %>
<%= render 'shared/children', :item => child unless child.leaf? %>
</li>
<% end %> <br />
</ul>
它似乎挂断的代码在这里
def move_up
#Need to add a before filter to find product so I don't have to keep doing it.
@product.find(params[:product])
@product.move_higher
end
当它执行查找时。谢谢!