вопрос о link_to_if в rails 4.0, потому что я только что обновил. Не было проблем с версией Rails 3.link_to_if in Rails 4.0
Упрощенный пример:
link_to_if(user, "User", user.id)
content_tag(:span, "No User")
end
Таким образом, для данного объекта пользователя он просто установить его идентификатор в ссылке. Моя проблема теперь в случае отсутствия пользователя (nil)/can даже hardcode «false» здесь. В старой Rails 3 он просто игнорирует параметры.
В Rails 4 он странно запускает параметры, даже если условие не выполняется. Почему это? Нужно ли мне проверять нуль, даже если это уже было сделано?
Редактировать, реальный код:
def link_to_previous_poster
link_to_if(@poster.prev, "< Previous".html_safe, poster_path(@poster.prev, :skip => skip_poster.to_i-1), :accesskey => 'h') do |name|
content_tag(:span, '< Previous'.html_safe, :class => "current")
end
end
В случае @ poster.prev == ноля это вызывает poster_path с нулевой стоимостью, что приводит к ошибке маршрутизации.
Ошибка в браузере:
ActionController :: UrlGenerationError в плакате # показать Показаны /.../show.html.haml где линия # 5 не поднял:
нет соответствующего маршрута {: действие => "шоу",: контроллер => "плакаты",: идентификатор => ноль,: формат => ноль,: пропустить => - 1} отсутствуют необходимые ключи: [: идентификатор]
вы пробовали 'link_to_if (user.present ?, "Пользователь", user.id) [и т.д.]'? – MrYoshiji
Покажите нам ошибку. – Serabe
он не работает, даже я использую 'link_to_if (false,« User », user.id)' it вызывает user.id – Calmon