How to have *_url generate urls with https:// protocol

Hello,

I accidentally posted this to the "Ruby" forum when it should have gone
here -- sorry.

I am using *_path in views and *_url in controllers (with redirect_to,
for example). It is my understanding that this is generally considered
a good practice.

I want to use my app using https, and thought it would work that way as
long as I loaded the app by browsing to https://my.app.com. However, it
appears that even if I do this, redirect_to some_model_url generates a
url with a protocol of https://.

How do I get *_url to generate a url with https:// for the protocol?

Regards,
Errol

Hello,

I accidentally posted this to the "Ruby" forum when it should have gone
here -- sorry.

I am using *_path in views and *_url in controllers (with redirect_to,
for example). It is my understanding that this is generally considered
a good practice.

I want to use my app using https, and thought it would work that way as
long as I loaded the app by browsing to https://my.app.com. However, it
appears that even if I do this, redirect_to some_model_url generates a
url with a protocol of https://.

I assume you meant to say "http://" ?

How do I get *_url to generate a url with https:// for the protocol?

some_model_url(:scheme => 'https')

-philip

I assume you meant to say "http://" ?

Yes! I thought I proof-read so well...

How do I get *_url to generate a url with https:// for the protocol?

some_model_url(:scheme => 'https')

Thanks for the response. I guess I was looking for a way to do this
application-wide. It would not be very DRY to have to add (:scheme =>
'https') to every place in my app where I call a *_url helper.

Is there another way?

Use *_path? I do it and haven't seen any browsers complain about the redirects...

Use *_path? I do it and haven't seen any browsers complain about the
redirects...

Again, that would mean going through the entire application and changing
every reference.

Besides, using relative paths in redirects violates the HTTP spec. I
understand that it gets the job done, but that doesn't seem like the
right way to do it.

I don't wish to appear argumentative, but I really hope somebody knows a
cleaner way to do this.

Errol Siegel wrote:

Use *_path? I do it and haven't seen any browsers complain about the
redirects...

Again, that would mean going through the entire application and changing
every reference.

Besides, using relative paths in redirects violates the HTTP spec. I
understand that it gets the job done, but that doesn't seem like the
right way to do it.

I don't wish to appear argumentative, but I really hope somebody knows a
cleaner way to do this.

Use default_url_options.

Best,

Hi Errol,

If you want to pull out data in csv format from an existing mysql
database using Rails, this is the easiest way to do it :

1. install fastercsv : sudo gem install fastercsv
2. Add on top of your controller : require 'fastercsv'
3. Create an action in your controller and its corresponding view

# The action
def import_csv
  result = YourModel.find(:all, :conditions => "your_condition")
  @outfile = "your_csv_report_name_" + Time.now.strftime("%m-%d-%Y") +
".csv"
  csv_data = FasterCSV.generate do |csv|
    #field names
    csv << ["Field_name_1"]
    csv << ["Field_name_2"]
    #Data
    result.each do |table|
      csv << [ table.field1 table.field2]
    end
    #Write data in csv format
    send_data csv_data,
      :type => 'text/csv; charset=iso-8859-1; header=present',
      :disposition => "attachment; filename=#{@outfile}"

    redirect_to :action => "your_action"
  end
end

#The view
<% form_tag :action => "import_csv" do %>
  <%= submit_tag 'Import CSV' %>
<% end %>

Hope this helps!

Regards,