上向き矢印と下向き矢印の2つの小さなボタンを作成しようとしています。私はProductというモデルを持っており、acts_as_listを使って位置を追跡しています。カスタムmove_upルートとmove_downアクション/ルートを作成するRails
コントローラを使ってルートを作成するにはどうすればよいですか?
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は、誰も私がこのルート関係を作成するのに役立つことはできますか?
EDIT:あなたはそれを期待していなかったとき は今、私はあなたが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
にハングアップしているように見えるコードですそれはfindを実行します。ありがとう!
おかげで、私が探していたものがありました。今ではオブジェクトエラーが発生していますが、コードを投稿してもそれを把握できたら – ruevaughn
私はそれを理解しました。@ product.find(params [:id])は@product = Product.find params [:id]) – ruevaughn