Ruby on rails Rails—在post和#x27上执行操作;s索引页
我有一个模型“产品”(这是父模型“产品组合”的子模型),用户可以喜欢它。现在,您只能在产品展示页面上喜欢该产品,因为我可以找到产品ID,这是我需要喜欢的Ruby on rails Rails—在post和#x27上执行操作;s索引页,ruby-on-rails,ruby-on-rails-4,rails-activerecord,rails-routing,Ruby On Rails,Ruby On Rails 4,Rails Activerecord,Rails Routing,我有一个模型“产品”(这是父模型“产品组合”的子模型),用户可以喜欢它。现在,您只能在产品展示页面上喜欢该产品,因为我可以找到产品ID,这是我需要喜欢的 def like @assortment = Assortment.find(params[:assortment_id]) begin current_user.vote_for(@product = Product.find(params[:id])) respond_with @product, :location
def like
@assortment = Assortment.find(params[:assortment_id])
begin
current_user.vote_for(@product = Product.find(params[:id]))
respond_with @product, :location => assortment_product_path
rescue ActiveRecord::RecordInvalid
redirect_to @product
end
end
我也希望用户能够喜欢产品索引页面上的产品。例如,如果您转到Pinterest,您可以喜欢其fluid grid布局页面上的所有产品以及相应页面上的每个图片
这是我还没有学会如何使用Rails的事情之一。我怎样才能做到这一点
提前谢谢!快乐假期假设您的
like
操作在产品控制器
中,并且您已将@products
设置为与索引页所需的产品相等,并且您正在使用erb,请在视图中放置类似的内容:
<% @products.each do |product| %>
<%= link_to "Like", product_link_path(id: product.id) %>
<% end %>
即使您的设置不同,也离此不远。完全相同。将
id
放入索引
视图的按钮中。类似于button_to'like',“products/like/{product.id}”
哦,上帝啊,如果这是真的,那么我应该退出dev.lol,但是下面的product\u链接路径(id:product.id)
比“{string surgery}”版本稍微正确一些。C-@Phlip:更漂亮,更易维护,但同样正确。但是,是的,我已经离开Rails有一段时间了,我不知道所有整洁的东西。这就是为什么我要写评论,而不是答案:我强烈建议method::post
或按钮_to
;由于“like”可能会改变服务器的状态,这将违反GET契约。是的,他没有指定这是什么类型的操作。OP,您必须根据需要将方法:*动词*
传递给产品链接路径的参数。如果它是一个GET,你不需要改变任何东西。如果它是一个GET,它就错了。GET请求永远不会改变服务器的状态,我很确定“喜欢”某个东西会这样做。感谢所有回答的人!我让它工作起来,学到了一些新东西。@Amadan他并没有修改产品
资源。他在创造一个像
(我想是吧?)。如果它只是产品上的一列,则应在update
操作中处理。如果Like
是一个单独的模型,则此请求应该命中likeController