Passing information to the controller from view


#1

Hi everyone,

I have a template called createFile.html.erb which has some ruby code in
it. The ruby code pulls information from the database because i’m
looping through some records. Is it possible to send all of the
information in the createFile.html.erb output to the createFile method
in the controller? I’m wanting to save the content of it all to a text
file…

Or is there an easier way to produce the same outcome?

Thanks,
McKenzie.


#2

On 7 Jan 2009, at 17:33, Ryan M. wrote:

render_to_string ?

Fred


#3

Frederick C. wrote:

On 7 Jan 2009, at 17:33, Ryan M. wrote:

render_to_string ?

Fred

render_to_string puts the whole html document in the data including the
template, however I only need part of the file. This code might explain
it a little better.

#demo_controller.rb

  1. def createFile
  2. render_to_string :layout => false
    
  3. @demo = Demo.find(params[:id])
    
  4. data = render_to_string
    
  5. f = File.open("#{RAILS_ROOT}/public/demo/demotest.txt", "wb")
    
  6. f.write(data)
    
  7. f.close
    
  8. end

#demo/createFile.html.erb

  1. ModelTemp {
  2.     Name "Mod"
    
  3. Halt 0.0
  4. DType “Define”
  5. FData {
  6. Events {
    
  7. <% for event in display_demo_events(@demo) %>
    
  8.   Event {
    
  9.                 Name "<%= event.name -%>"
    
  10.                 Desc "<%= event.description -%>"
    
  11.                 Constant {FRate="<%= event.f_rate -%>"}
    
  12.               }
    
  13.   <% end %>
    
  14. }
    
  15. Outputs {
    
  16.   <% for deviation in display_demo_events(@demo) %>
    
  17.   Deviation {
    
  18.                 Name "<%= deviation.output_class -%>"
    
  19.                 "<%= deviation.description -%>"
    
  20.               }
    
  21.   <% end %>
    
  22. }
    
  23. }
  24. }

#4

On Jan 7, 2009, at 6:45 PM, Ryan M. wrote:

the
template, however I only need part of the file. This code might
explain
it a little better.

#demo_controller.rb

  1. def createFile
  2. render_to_string :layout => false
    

render here…

  1. @demo = Demo.find(params[:id])
    
  2. data = render_to_string
    

…and here??? (without giving :layout => false)


#5

In your controller, you just need

data = render_to_string({:action => ‘create.html.erb’,
:layout=>false})

I’m doing a PDF (using HTMLDOC) that way. Works awesome.


#6

Brian H. wrote:

In your controller, you just need

data = render_to_string({:action => ‘create.html.erb’,
:layout=>false})

I’m doing a PDF (using HTMLDOC) that way. Works awesome.

Hi Brian, that works a treat thanks. I’m also trying to output some
information to a pdf. Have you got an email address I can contact you
at?

Thanks


#7

bphogan at gmail dot com

On Thu, Jan 8, 2009 at 8:47 AM, Ryan M.