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
En mi aplicación Rails, tengo dos tablas llamadas Coordinates
y Tweets
. Tengo cuatro acciones para ser rendidas.
Mi routes.rb
archivo
Tweetsblog2::Application.routes.draw do
resources :tweets, :coordinates
get "tweets/show"
get "tweets/index"
match "/tweets/show" => "tweets#show"
match "/tweets/index" => "tweets#index"
Cada vez que navego a http://localhost:3000/tweets
se está mostrando tweets/index
en lugar de tweets/show
Y el mismo error que estoy recibiendo con diferentes nombres.
Cuando navego a http://localhost:3000/tweets/show
está dando ArgumentError in TweetsController#show
.
Cuando navego a http://localhost:3000/tweets/index
está dando ArgumentError in TweetsController#show
la misma cosa
Mi codigo para 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 %>
Mi codigo para 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>
No está enrutando a la página adecuada. Por favor, ayúdeme, estoy atascado con esto.
Respuestas
0 para la respuesta № 1tu tienes que escribir
resources :tweets, except: [:index,:show]
Debido a que primero declaró su recurso, entonces Rails está tratando de hacer coincidir su enrutamiento predeterminado en lugar de su acción personalizada:
get "tweets/index"
0 para la respuesta № 2
-actualizando por comentario-
Tweetsblog2::Application.routes.draw do
resources :coordinates
get "tweets/show" => "tweets#show"
get "tweets/index" => "tweets#index"
Eliminando los recursos:Los tweets deberían solucionar su problema y permitirle usar solo llame a las 2 opciones. Los recursos iniciales: los tweets le indican a los carriles que deseaba rutas con recursos (el índice muestra todos los recursos, muestra uno específico, etc.). Así que simplemente construir las 2 rutas sin recursos como se muestra arriba, suena como lo que quieres. La forma en que normalmente hago algo como esto es simplemente incluir el formulario de búsqueda en la página de índice y, si no hay parámetros de búsqueda, mostrar todos los tweets.)