我尝试从下拉菜单中按照提交按钮更改应用程序的语言。 我在route.rb中引入了一个名为“language_change”的控制器:
resources :language_change, :only => [:create, :new]
在视图home.html.erb中,我这样说:
<%= form_tag language_change_path, :method=>:post do %>
<div class="field">
<%= select_tag(params[:l],
options_for_select(
[[t('language.english'),'en'],
[t('language.french'), 'fr'],
[t('language.dutch'), 'nl']], params[:l]),
)
%>
</div>
<div class="actions"> <%= submit_tag "Change language!" %>
<% end %>
最后在控制器中我放了:
class LanguageChangeController < ApplicationController
def create
I18n.locale=params[:l]
end
end
加载主页时,我收到以下错误消息:
undefined local variable or method `language_change_path'
有人能告诉我出了什么问题吗? 我不明白的是,在视图中我用应用程序中其他地方定义的另一个控制器替换'language_change_path',例如。 'password_reset_path'它显示页面甚至处理提交。
感谢您的治疗
答案 0 :(得分:1)
您可能需要在routes.rb
中更改此行:
resources :language_change, :only => [:create, :new]
到此:
resource :language_change, :only => [:create, :new]
否则,帮助方法language_change_path
期望链接到LanguageChange
的特定实例。通过将资源指定为单数,您不需要将实例传递给帮助程序,因为它只需要存在一个这样的实例。
我猜你的password_reset
资源也是单数。