/ / ruby ​​on rails erreur de routage lors du routage vers la mauvaise page - ruby-on-rails, ruby-on-rails-3, routes

ruby on rails routage des erreurs de routage à la mauvaise page - ruby-on-rails, ruby-on-rails-3, routes

coordinates GET    /coordinates(.:format)          coordinates#index
POST   /coordinates(.:format)          coordinates#create
new_coordinate GET    /coordinates/new(.:format)      coordinates#new
edit_coordinate GET    /coordinates/:id/edit(.:format) coordinates#edit
coordinate GET    /coordinates/:id(.:format)      coordinates#show
PUT    /coordinates/:id(.:format)      coordinates#update
DELETE /coordinates/:id(.:format)      coordinates#destroy
tweets_search GET    /tweets/search(.:format)        tweets#search
tweets_index GET    /tweets/index(.:format)         tweets#index

class TweetsController<ApplicationController

def index
#include "coordinates_controller.rb"
include SearchHelper
include ParamasHelper
@sql=a.search
@tweets=Tweets.paginate_by_sql(sql, :@page, :per_page => @per_page ).all
end
end

Dans mon application Rails, j'ai deux tables nommées Coordinates et Tweets. J'ai quatre actions à rendre.

ma routes.rb fichier

Tweetsblog2::Application.routes.draw do
resources :tweets, :coordinates
get "tweets/show"
get "tweets/index"
match "/tweets/show" => "tweets#show"
match "/tweets/index" => "tweets#index"

Chaque fois que je navigue vers http://localhost:3000/tweets, c’est montrer tweets/index au lieu de tweets/show et la même erreur que je reçois avec des noms différents.

Quand je navigue vers http://localhost:3000/tweets/show, c'est donner ArgumentError in TweetsController#show.

Quand je navigue vers http://localhost:3000/tweets/index c'est donner ArgumentError in TweetsController#show même chose

Mon code pour show.html.erb:

<%= form_tag({controller: "tweets", action:"index" }, method: "get") do  %>
<%= label_tag(:search, "search for:") %>
<%= text_field_tag(:show) %>
<%= text_field_tag(:search) %>
<%= submit_tag("get results ") %>
<% end %>

Mon code pour index.html.erb:

<%= will_paginate @tweets %>
<% @tweets.each do |tweets| %>
<ul>
<li><%= tweets.id %></li>
<li><%= tweets.tweet_created_at %></li>
<li><%= tweets.tweet_id %></li>
<li><%= tweets.tweet_source %></li>
<li><%= tweets.tweet_text %></li>
<li><%= tweets.user_id %></li>
<li><%= tweets.user_name %></li>
<li><%= tweets.user_sc_name %></li>
<li><%= tweets.user_loc %></li>
<li><%= tweets.user_img %></li>
<li><%= tweets.longitude %></li>
<li><%= tweets.latitude %></li>
<li><%= tweets.place %></li>
<li><%= tweets.country %></li>
<% end %>
</ul>

Ce n'est pas la route à suivre. Aidez-moi, je suis coincé avec ça.

Réponses:

0 pour la réponse № 1

tu dois écrire

resources :tweets, except: [:index,:show]

Parce que vous avez déclaré votre ressource en premier, rails tente de faire correspondre son routage par défaut à la place de votre action personnalisée:

get "tweets/index"

0 pour la réponse № 2

-mise à jour par commentaire-

Tweetsblog2::Application.routes.draw do
resources :coordinates
get "tweets/show"  => "tweets#show"
get "tweets/index" => "tweets#index"

Supprimer les ressources:Les tweets devraient résoudre votre problème et vous permettre d’utiliser simplement les 2 options. Les ressources initiales: tweets indiquent aux rails que vous vouliez des itinéraires riches en ressources (l’index montre l’ensemble des ressources, en indique une, etc.). Il ne vous reste donc plus qu'à créer les 2 itinéraires sans ressources, comme ci-dessus. La façon dont je fais normalement quelque chose comme ceci est d’inclure simplement le formulaire de recherche dans la page d’index et s’il n’ya pas de paramètre de recherche, alors affichez tous les tweets.)