Как я могу гарантировать, что имя controller.action_name вернет правильную информацию? Я полагаюсь на это, чтобы создавать удобные для пользователя сообщения в строке меню. Рассмотрим следующий сценарий.Насколько надежным является метод action_name в рельсах?
Метод action_name отлично работает, когда я использую:
redirect_to edit_profile_path # I get action_name as "edit" in my ApplicationController
Но это не дает информацию мне нужно, когда я использую следующее:
render :action => "edit" # The action_name shows as "get" instead of "edit"
Есть ли способ, что я могу использовать визуализации действие и все еще получить правильное имя action_name?
Спасибо, Tabrez
---- фрагменты кода в ответ на комментарий Mischa в ----
Это то, что я имею в контроллере:
def update
if @profile.update_attributes(params[:profile])
format.html {
flash.now[:notice] = 'Profile was successfully updated.'
render :action => "edit"
}
end
Я не являюсь перенаправление, потому что я все еще хочу, чтобы пользователь оставался в режиме редактирования.
В моем помощнике приложения У меня есть код к следующему эффекту:
if(action_name == "edit" && (can? :read, l_disp_object)) then
path_links_subheader.concat(link_to 'Show Saved Version', :controller => controller.controller_path, :action => :show)
end
В принципе, если пользователь находится в режиме редактирования, я хочу «Показать сохраненную версию» ссылку в меню. Но, когда я использую синтаксис «render: action», действие изменяется на «get», что имеет смысл в зависимости от того, что упоминал Миша (действие здесь является неправильным). Итак, есть ли способ, которым я могу это сделать, не вызывая перенаправления? Единственная причина, по которой я не использую перенаправление, заключается в том, что логика сохранения текущей вкладки для пользователя работает с действием рендеринга. Возможно, мне придется переписать его, если единственный возможный способ выполнить это - это перенаправить.
Что в вашем файле routes.rb для этого действия? –
Привет, Фредерик. См. Обновленную версию. Я смог проследить проблему до того, как я отображу вид редактирования. – Tabrez