Генерация ссылки в контроллере с HTTP-глаголом - PullRequest
0 голосов
/ 03 мая 2009

Используя ресурс restful в Rails, я хотел бы иметь возможность вставить ссылку в мой флэш-хэш, который пользователь может щелкнуть, чтобы уничтожить рассматриваемый объект. Кажется, единственная проблема заключается в том, что я не могу заставить сгенерированную ссылку работать с контроллером RESTful!

Сначала я попробовал

link_to "Change your reservation", reservation_path(@existing_reservation), :method => :delete

Это не сработало, потому что link_to - это вспомогательный метод в ActionView, недоступный в контроллерах

Следующая находка была url_for

url_for :controller => 'reservations', :actions => 'destroy', :method => :delete

, который вернул меня к шоу. Я перепробовал каждую комбинацию из двух, которую смог найти. , , но я не могу создать ссылку в моем контроллере, которая будет добавлена ​​в методе удаления! Каждое сгенерированное мной действие создает нормальную ссылку (GET), которая вызывает метод show.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 10 мая 2009

ApplicationController.helpers.link_to позволит вам использовать вспомогательные методы в контроллерах, хотя я не уверен, что он строго следует MVC. Хотя иногда я обнаруживал необходимость, то есть звонил number_to_currency.

Другая проблема возникает, когда вы используете опцию: delete в этом конкретном помощнике. Это не удастся. После быстрого взгляда на исходный код я не могу увидеть немедленное исправление.

Во-первых, я бы порекомендовал вам разместить ссылку для удаления где-нибудь еще на этой странице, если это возможно. Если вам нужно действительно во вспышке, вы можете изменить вспышку в представлении.

т.е. в настройках контроллера вспышка:

flash[:notice] = "Flash message with a  DELETE LINK in it"

Затем в представлении измените эту вспышку перед ее отображением:

<%=  flash[:notice].gsub(/DELETE LINK/, link_to("delete", resource_path, :method => :delete)) %>

Возможно, вы захотите просто превратить это в своего помощника. Если вам не нравится добавление текста таким образом, я уверен, что вы могли бы найти другой способ, как насчет добавления ссылки на флэш-память?

Надеюсь, это поможет:)

0 голосов
/ 03 мая 2009

Вместо использования пути, попробуйте передать только сам объект, например,

link_to "Change your reservation", @existing_reservation, :method => :delete
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...