comment obtenir la valeur sélectionnée à l'aide select_tag avec options_from_collection_for_select et de le transmettre au contrôleur
J'ai construit un formulaire de recherche comme ceci:
<%= form_tag({ controller: 'questions', action: 'search_topic' }, method: 'get') do %>
<%= select_tag 'search_topic', options_from_collection_for_select(current_user.get_topics, :id, :name) %>
<%= submit_tag "Search", name: nil, class: 'btn' %>
<% end %>
Je recherche à toutes les questions d'un sujet sélectionné à partir de la boîte de sélection, j'ai utilisé des taches solaires à l'aide à la recherche, alors maintenant, comment puis-je passer de la valeur de sélectionner à partir de sélectionner la zone de contrôleur pour la recherche, j'ai utilisé le code ci-dessous pour passer un params [:]:
<%= select_tag 'search_topic', options_from_collection_for_select(current_user.get_topics, :id, :name), params[:search] %>
mais il a erreur:
undefined method `[]' for nil:NilClass
c'est mon contrôleur:
def search_topic
@search = Question.search do
with(:topic_id, params[:search])
paginate page: 1, per_page: 10
end
@questions = @search.results
render 'index'
end
alors, comment puis-je passer de la valeur sélectionné à partir de la boîte de sélection sur le formulaire de contrôleur pour la recherche?
OriginalL'auteur Thanh | 2012-11-02
Vous devez vous connecter pour publier un commentaire.
Hey, il n'est pas nécessaire de passer params[:recherche].
Rails génère automatiquement les paramètres pour sélectionner lorsque le bouton soumettre serait cliqué.
Si vous voulez params nom de la "recherche", puis modifier le nom de sélectionner de recherche "sujet" à "rechercher".
Si vous voulez vérifier la valeur de params, comment serait-il recevoir dans les params, essayez débogueur et vérifier la valeur de paramètres générés par cette forme.
Aussi, il existe un raccourci, essayez de mettre une erreur dans l'action " après avoir appuyé sur envoyer, et de lire params sur la page de votre navigateur. Aussi, vous pouvez imprimer en flash sur la page suivante
qu'avez-vous fait dans le contrôleur? pouvez-vous partager votre code dans le contrôleur et le fichier de vue, et aussi l'erreur si possible
mon contrôleur et la vue sont à mes questions, seulement différents, c'est que j'ai changé params[:recherche] pour params[:search_topic].
quelle est l'erreur que vous obtenez? Aleast répondre
ESSAYEZ d'UTILISER la pagination de la page: params [:], per_page: 10
OriginalL'auteur Akshay Vishnoi
Cela suppose que le code de la vue affichée est à l'intérieur d'une forme. Si cette forme de postes, il finit par dire dans l'action de création:
contenant la valeur que vous avez sélectionnée.
OriginalL'auteur RadBrad