0
我正在用多種語言設置我的新Rails網站,並且遇到路由問題。我遵循「使用Rails 4開發敏捷web開發」一書的指導。Rails路由錯誤開關本地
瀏覽器打印出這個錯誤,但我可以看到路由創建正確,因此: 我在做什麼錯了?當我嘗試在瀏覽器中直接把路由(「本地主機(在此消息的結尾,我會附上我的所有路由)
沒有路由匹配[POST]「/ EN /家」
:3000/en「OR」localhost:3000/es「)一切正常。只有當我更換我的語言的切換器時纔會打印錯誤。這就是爲什麼我認爲路線設置正確,我認爲是我的切換臺或控制器的問題......?
這是application.html.rb代碼(基本語言之間切換器):
<%= form_tag home_path, class: 'locale' do %>
<%= select_tag 'set_locale',
options_for_select(LANGUAGES, I18n.locale.to_s),
onchange: 'this.form.submit()' %>
<%= submit_tag 'submit' %>
<%= javascript_tag "$('.locale input').hide()" %>
<% end %>
這是我的routes.rb文件的配置:
Group::Application.routes.draw do
devise_for :admin_users, ActiveAdmin::Devise.config
ActiveAdmin.routes(self)
scope '(:locale)' do
resources :posts
resources :contacts
root "posts#home"
get "/home" => "posts#home"
get "/contact" => "contacts#new"
# static pages
get "/investment" => "contents#investment"
get "/partner-with-us" => "contents#partner", as: "partner"
get "/our-companies" => "contents#companies", as: "companies"
get "/site-map" => "contents#sitemap", as: "sitemap"
get "/terms-and-conditions" => "contents#terms", as: "terms"
get "/privacy" => "contents#privacy"
end
end
這是在/config/initializers/i18n.rb創建的文件:
#encoding: utf-8
I18n.default_locale = :en
LANGUAGES = [
['English', 'en'],
["Español".html_safe, 'es']
]
最後,這是我的posts_c代碼ontroller.rb,因爲這裏是我爲了把過去後在主頁上創建一個動作「家」:
class PostsController < ApplicationController
def index
@posts = Post.all.order("created_at desc")
end
def show
@post = Post.find(params[:id])
end
def home
if params[:set_locale]
redirect_to home_url(locale: params[:set_locale])
else
@posts = Post.all.order("created_at desc")
end
end
end
謝謝你,朋友。 – user2092653
就是這樣。你能解釋我爲什麼必須添加GET方法嗎?非常感謝你。 – user2092653
,因爲默認情況下form_tag生成一個帶有POST方式的表單作爲http方法,並且您只有一個GET方法的路由,因此您的表單應該具有GET方法 – amine