j'ai passé une valeur dans une page de recherche par -Rails - passant des paramètres arbitraires dans la recherche
<%= link_to 'add', users_path(bookto: @book.id) %>
dans la vue et
@book = Book.find_by_id(params[:bookto])
dans l'action du contrôleur de réception.
J'ai un formulaire de recherche dans mon récepteur (index) vue
<%= form_tag users_path(params[bookto: @book.id]), method: 'get' do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", name: nil %>
</p>
<% end %>
<%= "#{@book.id}, #{@book.title}" %>
<% if @users %>
<%= render partial: 'layouts/showusers', locals: {users: @users} %>
<% end %>
Quand je navigue jusqu'à la page
http://localhost:3000/users?bookto=1
La valeur de @book est passé correctement. Toutefois, lorsque j'effectue une recherche, le paramètre n'est pas transmis à
http://localhost:3000/users?utf8=✓&search=mysearch
Je ne transmets pas le paramètre. Je ne veux pas utiliser ce paramètre arbitraire dans la recherche, je veux juste qu'il soit disponible pour que je l'utilise une fois la recherche terminée. Comment puis-je y parvenir? Dois-je ajouter une action de recherche à mon contrôleur?
Si rien d'autre, vous voudrez probablement utiliser '@ book.id' comme paramètre, pas la représentation de chaîne du livre. Comment est rendu le lien? –
Salut - bon point sur @ book.id, j'ai fait ce changement et mettra à jour la question. Quand je lance la recherche, il tombe avec 'ActiveRecord :: RecordNotFound dans UsersController # index Impossible de trouver Book sans ID' - merci, Dan – RADan
Ce n'est pas vraiment votre problème, mais il est toujours plus sûr de dire '@book = Livre .find_by_id (params [: bookto]) 'plutôt que' @book = Book.find (params [: bookto]) ': le premier mettra @book à zéro s'il ne trouve pas de livre, ce dernier explose. –