Learning how models, controllers, and views pass data

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’ %>

Message
<%= text_area 'email', 'message' %>

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 = ‘[email protected]
@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?

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 forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs