2012-01-05 3 views
0

Итак, у меня есть метод «создать» внутри моего контроллера, но как только я создаю свою модель, вместо того, чтобы показывать сама модель, я хочу, чтобы мое представление отображало только URL-адрес этой модели, например: "http://www.myapp.com/model/1".Post Response как url ​​

Я определил другое действие внутри моего контроллера, который называется «URL», и после того, как модель сохраняется (внутри создать метод), я делаю так:

format.html { render :action => "url" } 

Таким образом, в этот URL вида I хочу показать полный URL-адрес моей модели.

Как я могу получить URL-адрес модели?

ответ

2

Вы можете использовать метод url_for, который доступен на каждом контроллере.

url_for(:action => 'login', :controller => 'members', 
     :only_path => false, :protocol => 'http') 

приведет к (например):

http://www.example.com/members/login/ 

Источник: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-url_for


И, как ответить, прежде чем мне (по-видимому, ответ был удален), вы можете позвонить url_for, давая это также объект (например, вновь созданный экземпляр модели):

# Create a new instance of a model: 
@new_order = Order.new(...) 
# And then get the url for that specific instance's location: 
url_for(@new_order) 

Надеюсь, я помог!

+0

url_for! это то, что я искал, tnx много! Позвольте мне спросить вас еще кое-что. Это внешнее приложение сделало этот POST в моем приложении (полученном при моем действии на создание), и я не должен возвращать HTML, а просто строку с этим URL-адресом, как я должен обрабатывать этот ответ? – brunosm

+0

Нет проблем :) Вы можете сделать это, вызвав «render text: url_for (...)» –

0

Вам нужно добавить действие в вашей конфигурации/routes.rb

get "model", :to => "model#url" 

Или для действия члена

get "model", :to => "model#url", :on => :member 
+0

Я не знаю, понял ли я вас или вас неправильно. Дело в том, что я не хочу переопределять мое действие show, например: если у меня есть GET в myapp/model/1, я хочу увидеть мою модель, как я определил в show.html.erb. Я хочу, когда пользователь создает модель, не перенаправляется на это действие show, а на это действие url, где у него будет только полный URL-адрес «http://www.myapp.com/model/1». Мой вопрос: как я могу получить этот URL-адрес только что созданной модели. Понял? Tnx! – brunosm

+0

Ох. Я предположил из вашего вопроса, что по какой-то причине у вас было какое-то действие, которое вы хотели бы вывести на имя url. url_for, как @Nico Hämäläinen сказал, что вы хотите. –