Forum: Ruby on Rails learning how models, controllers, and views pass data

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
E25296bf52723dc37bc462271eb02d2d?d=identicon&s=25 Jason Pfeifer (jpfeifer)
on 2006-01-23 02:16
As a noob to Rails and web development in general, I think I still need
a broader understanding of how Views, Controllers, and Models pass
information and variables to each other.

I'm creating a site that allows for email campaigns.  I have a
'create_email_controller':

class Admin::CreateEmailController < Admin::BaseController
	layout 'admin'
  def index
    write
    render :action => 'write'
  end

  def write
    @email = Email.new
  end

  def email_list
 	 email = Email.find(:all)
 	 email.each { |address| MailList::deliver_send_email(address) }
 	 redirect_to (:action => @section)
  end

end

where I want the user to type a message body into a textarea field:

<%= error_messages_for 'email' %>

<!--[form:email]-->
<p><label for="email_message">Message</label><br/>
<%= text_area 'email', 'message'  %></p>

<!--[eoform:email]-->

I want to pass from the form a variable @message to email_list in the
controller, which passes to the MailList model:

class MailList < ActionMailer::Base
	def send_email(email)
		@recipients = email.address
		@from = 'info@toropaintballs.com'
		@subject = 'Toro Paintball'
		@body['full_name'] = email.fullname
                ## @message in here someway ##
	end
end

which invokes the view send_email.rhtml:

Dear <%= @full_name %>,

<%= @message %>

Hope this isn't way too long winded, but is this completely simple to do
without having to store @message as a session variable or in the DB?
Can I just take the value of the textarea, pass it through the
controllers and model to the view like this?
B4988fe1d25f1afd8a9697ee3896db2d?d=identicon&s=25 Guest (Guest)
on 2006-01-23 13:31
In your controller, you can get the message variable with something like
this :

params[:message]

More generally, params holds all your form's variables
This topic is locked and can not be replied to.