Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails—在post和#x27上执行操作;s索引页_Ruby On Rails_Ruby On Rails 4_Rails Activerecord_Rails Routing - Fatal编程技术网

Ruby on rails Rails—在post和#x27上执行操作;s索引页

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

我有一个模型“产品”(这是父模型“产品组合”的子模型),用户可以喜欢它。现在,您只能在产品展示页面上喜欢该产品,因为我可以找到产品ID,这是我需要喜欢的

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