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
В моето приложение Rails имам две имена Coordinates
и Tweets
, Трябва да извърша четири действия.
мой routes.rb
досие
Tweetsblog2::Application.routes.draw do
resources :tweets, :coordinates
get "tweets/show"
get "tweets/index"
match "/tweets/show" => "tweets#show"
match "/tweets/index" => "tweets#index"
Винаги, когато отивам http://localhost:3000/tweets
, показва се tweets/index
вместо tweets/show
и същата грешка, която получавам с различни имена.
Когато се придвижвам до http://localhost:3000/tweets/show
, дава се ArgumentError in TweetsController#show
.
Когато се придвижвам до http://localhost:3000/tweets/index
даването му ArgumentError in TweetsController#show
същото нещо
Моят код за 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 %>
Моят код за 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>
Това не е маршрутизация към правилната страница. Моля, помогнете ми, аз съм остана с това.
Отговори:
0 за отговор № 1трябва да напишеш
resources :tweets, except: [:index,:show]
защото първо заявихте ресурс, така че релсите се опитват да съвпаднат с маршрутизацията си по подразбиране вместо с персонализираното си действие:
get "tweets/index"
0 за отговор № 2
- актуализиране на коментар-
Tweetsblog2::Application.routes.draw do
resources :coordinates
get "tweets/show" => "tweets#show"
get "tweets/index" => "tweets#index"
Премахване на ресурсите:Туитовете трябва да поправят проблема ви и да ви позволят да използвате само 2 опции. Първоначалните ресурси: Tweets казва на релсите, че искате изобретателни маршрути (индексът показва целия ресурс, показват конкретна и т.н.). Така че само изграждането на двата маршрута, които не са полезни, звучи като това, което искате. Начинът, по който обикновено правя нещо подобно, е просто да включа формуляра за търсене в индексната страница и ако няма търсене, ще покаже всички туитове.)