2015-11-17 1 views
0

Ainsi, j'ai des utilisateurs marquent des articles préférés. J'essaye d'ajuster l'index pour montrer seulement là les poteaux préférés.Passer le paramètre au contrôleur

Mon contrôleur d'index ressemble à ce

def index 
    require 'soundcloud' 
    @streamid = '?client_id=7e24fb69b20b922b683870511ae8d2d1' 
    @client = Soundcloud.new(:client_id => '7e24fb69b20b922b683870511ae8d2d1') 
    if params[:search] 
    @posts = Post.search(params[:search]).order("created_at DESC") 
    elsif params[:genre] 
    @posts = Post.tagged_with(params[:genre]).order("created_at DESC") 
    elsif params[:favorites] 
    @posts = Post.first 
    else 
    @posts = Post.reorder('votes desc').find_with_reputation(:votes, :all).first(10) 
    end 
end 

Mon bouton link_to ressemble à ce

<li><%= link_to ("<i class='glyphicon glyphicon-heart'></i> My Favorites").html_safe, root_path(:param => :favorites) %></li> 

Les changements URL pour

http://localhost:3000/?param=favorites

Mais la page ne se met pas à jour à la variable @posts dans le contrôleur.

Que dois-je faire?

Merci d'avance.

Répondre

1

juste besoin de deux étapes:

  1. changer votre paramètre vue:

    <li><%= link_to ("<i class='glyphicon glyphicon-heart'></i> My Favorites").html_safe, root_path(:favorites => 1) %></li>

    Il va générer un lien vers http://localhost:3000/?favorites=1

  2. Dans votre contrôleur, vérifiez le paramètre "favoris" comme une chaîne. Remplacez la ligne

    elsif params[:favorites]

    avec

    elsif params[:favorites].present? and params[:favorites].to_s == '1'

+0

Impressionnant Yang! Merci pour l'aide. Marquer comme correct après minuterie de 3 min s'en va. –

+0

@MattThomas Merci l'homme! – Yang