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 № 1tu 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.)