Я испытываю проблему, аналогичную предыдущему ТАК вопрос , но ответ мне не подходит. Поэтому я хотел бы продолжить свою проблему.
У меня есть действие в контроллере, которое обновляет мою модель профиля с помощью флажка. Когда я нажимаю флажок, когда приложение работает локально, у меня нет проблем. Однако при развертывании в Heroku я получаю:
ActionView::MissingTemplate (Missing template profiles/show_hometown_settings with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:html], :locale=>[:en, :en]} in view paths "/app/app/views", "/app/vendor/plugins/rails_log_stdout/app/views", "/app/vendor/plugins/rails3_serve_static_assets/app/views", "/app/vendor/plugins/paperclip/app/views"):
Я добавил и файл _show_hometown_settings.html.erb
, и файл _show_hometown_settings.js.erb
, но ни один из них не помог. Проверка моего флажка дала мне ванильный код на моем экране и вышеупомянутую ошибку.
Если я добавлю show_hometown_settings.html.erb
, я больше не получу ванильный код. Я вижу шаблон show_hometown_settings.html.erb
, но все равно получаю сообщение об ошибке, и я не перенаправляюсь на мой settings_path
, что является целым пунктом (проверьте, чтобы обновить, опубликовать в db, перенаправить, чтобы внести дальнейшие изменения настроек). Кто-нибудь может мне помочь с этим?
Вот действие контроллера:
def show_hometown_settings
@profile = current_user.profile
if @profile.show_hometown == true
if @profile.update_attributes(:show_hometown => false)
redirect_to settings_path
else
redirect_to settings_path, :notice => 'Oops, something went wrong. Please try again.'
end
elsif @profile.show_hometown == false
if @profile.update_attributes(:show_hometown => true)
redirect_to settings_path
else
redirect_to settings_path, :notice => 'Oops, something went wrong. Please try again.'
end
end
end
Вот форма, которую я использую для действия:
<%= form_tag({:action => "show_hometown_settings", :controller => "profiles"}, :html => {:multipart => true }) do %>
<%= check_box_tag(:show_hometown, 1, @user.profile.show_hometown ? true : false) %>
<%= @user.profile.hometown %>
<% end %>
ОБНОВЛЕНИЕ: Вот часть моего routes.rb
файла, который ссылается на действие:
match "profiles/show_hometown_settings", :to => "profiles#show_hometown_settings"
ОБНОВЛЕНИЕ 2: После вопроса ниже я получил другую ошибку, и мои журналы показывают проблему маршрута:
Возвращает
`The page you were looking for doesn't exist (404)`
А по моему heroku logs --tail
вижу
2012-01-19T23:13:47+00:00 app[web.1]: Started POST "/profiles/show_hometown_settings" for 98.218.231.113 at 2012-01-19 23:13:47 +0000
2012-01-19T23:13:47+00:00 app[web.1]:
2012-01-19T23:13:47+00:00 app[web.1]: ActionController::RoutingError (No route matches "/profiles/show_hometown_settings"):
Если я изменю маршрут с: via => [: put] на: via => [: post], это сработает. Надеюсь, все в порядке.