简体   繁体   English

远程:对于带有参数的link_to为true

[英]Remote: true with link_to with params

I have following problem 我有以下问题

I have link_to 我有link_to

//_sort_by.html.erb
 <%= link_to "sort", :sort_by => "things", remote: true %> 

And in my controller I have function which choose posts according to sort_by 在我的控制器中,我具有根据sort_by选择帖子的功能

def show_posts    
    @category=Category.find_by(name: params[:sort_by])

    if(@category)

    @posts=Post.where(category_id: @category)

    respond_to do |format|
      format.js  
      format.html
    end

    else
      @posts=Post.all
    end
 end

and in views 并在意见

   //show_posts.html.erb
       <div class="posts">
                      <%= render @posts %> 
       </div>
   // 
   and I have _post.html.erb

It works fine (obviously without remote: true), but it refreshes site everytime when I change category of posts so in show_posts.js.erb I'd like to refresh only class="posts", like 它工作正常(显然没有remote:true),但是每次更改帖子的类别时都会刷新网站,因此在show_posts.js.erb中,我只想刷新class =“ posts”,例如

  $('.posts').load(location.href + " .posts");

In routes.rb I have get 'show_posts'. 在routes.rb中,我得到了“ show_posts”。 But unfortunatelly it doesn't work. 但不幸的是,它不起作用。 Could someone help me? 有人可以帮我吗?

Edit: changing show_posts.js.erb to 编辑:将show_posts.js.erb更改为

  $('.posts').html("<%= j render @posts %>");

works. 作品。 Thank you all for tips! 谢谢大家的提示!

 $('.posts').append("<%= escape_javascript render(:partial => 'posts') %>");

使用这些内容更改您的show_posts.js.erb。

Try this out 试试看

$('.posts').html("<%= j render 'post' %>");

Hope this helps! 希望这可以帮助!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM