Assez nouveau sur les rails. Je fais une application de magasin de livres simple. Nous avons différents sujets tels que la physique, la chimie, la philosophie, etc ... Chaque domaine a quelques livres en dessous. L'URL se terminant par book/list listera tous les livres quels que soient les domaines. Les domaines apparaissent également dans la même page que le lien hypertexte. L'URL se terminant par book/show_subject/< sujet ID > répertorie tous les livres avec ce sujet id. Donc je clique sur le sujet si je veux voir les livres appartenant à ce domaine. La page livre/liste a un lien hypertexte vers une page où nous pouvons ajouter de nouveaux livres (book/new). Supposons qu'il n'y ait pas de livres pour ce sujet (disons physique), j'affiche un lien disant voulez-vous ajouter des livres ici? En cliquant sur le fait que cela m'amène à la page où j'entre l'information du livre + le domaine auquel le livre appartient (livre/nouveau). J'ai une liste déroulante pour le sujet ... comment puis-je configurer cette liste déroulante pour montrer la physique initialement, (puisque j'ai navigué à cette page après avoir remarqué qu'il n'y avait pas de physique dans le magasin).ruby on rails: charger la page avec la valeur par défaut dans la liste déroulante/select
Répondre
une option pourrait être de faire le point de lien vers
/book/new?book_subject_id_=1
et recieving la sélection dans le contrôleur avec cette ligne:
class BookController < #...
def new
@book = Book.new(:subject_id => params[:book_subject_id])
#...
end
#...
end
va créer un objet livre AR avec le sujet que vous avez choisi .
Alors, selon vous, la forme sera définie pour accepter la @book, quelque chose comme:
<% form_for @book, :url => your_create_url, :method => { :post } do %>
<%= f.collection_select :subject_id, Subject.all.map{|s| [s.name, s.id]} %>
...
la partie importante est qui appelle la méthode id_sujet sur l'objet du livre afin que vous puissiez récupérer la valeur définir dans la demande.
cette manière, la sélection choisira le sujet de la physique
(note: selon les conventions de rails livre devrait être livres dans les contrôleurs et urls)
Habituellement, vous devez faire cela en ajoutant un paramètre à la requête GET. Vous pouvez l'ajouter à votre lien de cette façon:
link_to new_book_path, :default_subject => @subject.name
Puis, dans l'action du contrôleur, vous attribuez les paramètres à votre nouvel objet:
class BookController < ActiveRecord
...
def new
@book = Book.new
if param[:default_subject]
@book.subject = Subject.find_by_name(param[:default_subject])
end
end
...
Vous n'avez pas besoin de changer votre forme tout , car il utilisera l'objet @book
pour attribuer des valeurs par défaut (si vous utilisez les aides de marques de formulaire normales). Par exemple:
<% form_for @book do |form| %>
<%= form.collection_select :subject_id, Subject.all, :id, :name %>
.. other fields ..
<% end %>
- 1. Changer la page d'index - Ruby on Rails
- 2. Ruby on Rails par défaut Écrasement accesseurs
- 3. Méthode ignorant la valeur du paramètre dans Ruby on Rails, en utilisant la valeur par défaut à la place
- 4. Ruby on Rails - javascripts jQuery par défaut
- 5. comment définir la valeur par défaut dans la liste déroulante?
- 6. Ruby on Rails: par défaut will_pagination à la dernière page des résultats
- 7. Ruby on rails: Sélectionnez le menu d'options avec l'attribut de valeur par défaut
- 8. Modifier la valeur de request.remote_ip dans Ruby on Rails
- 9. Valeur par défaut pour la liste déroulante
- 10. Définir une valeur par défaut dans la liste déroulante
- 11. Liste triable Ruby on Rails
- 12. Ruby on Rails formulaire_pour sélectionner le champ avec la classe
- 13. Charger la valeur par défaut pour un extjs comboBox
- 14. Charger la partie Ruby on Rails dans la boîte de dialogue jQuery UI
- 15. Ruby on Rails: + AJAX: Comment définir la valeur d'un champ
- 16. ruby-on-rails conçoit la gemme
- 17. ruby on rails: comment changer la couleur BG des options dans la liste de sélection
- 18. Ruby on Rails Actions help
- 19. Masquage de la case à cocher et attribution de la valeur - Ruby on Rails - Facile Question
- 20. valider la création par post_id et ip_address - Ruby on Rails
- 21. Modification de l'option par défaut highlighColor AJAX - Ruby on Rails
- 22. UserControl Valeur par défaut dans la propriété
- 23. Ruby on Rails - Page statique en page de démarrage
- 24. Charger différents CSS dans la mise en page de l'application en fonction du type de page (Ruby on Rails)
- 25. Valeur par défaut dans la liaison WPF
- 26. Ruby on Rails et la sécurité
- 27. Comment forcer Jruby à utiliser Ruby 1.9 intégré à la place de Ruby 1.8 qui est la valeur par défaut?
- 28. Ruby on Rails question de la migration
- 29. jQuery Valider: Pas la valeur par défaut
- 30. ruby on rails aide à la pluralisation?
Comment faire pour que le lien pointe vers/book/new? Book [subject_id] = 1? Vous avez essayé quelque chose comme <% = link_to 'Voulez-vous en ajouter un?', {: Action => 'nouveau'}, {: default_subject => @ subject.name}%> – deostroll
désolé j'ai corrigé la réponse, vous devez manipulez cela dans votre nouvelle action dans BookController, dites moi si vous n'avez pas quelque chose – makevoid
en train d'obtenir une erreur ici <% = collection_select: id, Subject.all.map {| s | [s.name, s.id]}%> Son mauvais nombre d'arguments (2 pour 5). PS: Je ne peux toujours pas créer le lien comme vous l'avez dit ...chaque fois que j'essaie de le rendre, il vient comme/book/new/1 ou book/new/2 en fonction du sujet depuis lequel j'ai navigué ... – deostroll