/ / ruby ​​on rails enrutamiento error enrutamiento a la página incorrecta - ruby-on-rails, ruby-on-rails-3, rutas

encaminamiento de error de ruteo de ruby ​​on rails a la página incorrecta - 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

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/tweetsse 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/showestá 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 № 1

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