Noob Question about params in my controller

I am passing several params from my view but need to put some logic
behind one of them. I pass a value of either “Yes” or “No” from my view
to the controller with the param known as “completed” under “update”.

Here is my controller and view which works fine:

view->

<%= form_tag :action => ‘update’, :id => @project %>
<% form_for :project do |f| -%>

Project Name <%= f.text_field :name %> <%= f.label :completed %> <%= f.select(:completed, ["No", "Yes"] )%>
<%= submit_tag 'Submit' %> <%= form_tag %> <% end -%>

controller->

def update
@project = Project.find(params[:id])
if @project.update_attributes(params[:project])
redirect_to :action => ‘index’, :id => @project
else
render :action => ‘edit’
end
end

I would like to add some logic to do something if the “completed” param
is equal to “Yes”. Here is my attempt but it doesn’t work:

def update
@project = Project.find(params[:id])
if @project.update_attributes(params[:project])
if params[:completed] == “Yes” do “something here” end
redirect_to :action => ‘index’, :id => @project
else
render :action => ‘edit’
end
end

Can anyone help me put some logic in for just the value of the completed
param?

thanks

On 8 March 2011 16:07, A. Mcbomb [email protected] wrote:

I would like to add some logic to do something if the “completed” param
is equal to “Yes”. Here is my attempt but it doesn’t work:

def update
@project = Project.find(params[:id])
if @project.update_attributes(params[:project])
if params[:completed] == “Yes” do “something here” end

When you say it does not work what do you mean? If it is just a
syntax error that is because you have not got the syntax for ‘if’
right, it should be
if params[:completed] == “Yes”

end
Note however that you are doing it after the record is saved, which
happens in update_attributes. If you are trying to do it before the
save then move it up to before the update.

Colin

Hi,

You can remove the form_tag. form_for will create that for you.

Then use something like:

f.label :completed
f.select(:completed, [[‘Yes’, true],[‘No’, false]])

Presumably Project has a boolean field called ‘completed’ with probably
a
:default => false on the migration.

Once you’ve updated your attributes you should probably just use:

if @project.completed?

do something clever here…

end

On 8 March 2011 16:07, A. Mcbomb [email protected] wrote:

end

You received this message because you are subscribed to the Google G.
“Ruby on Rails: Talk” group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.


Tim H.

Well Informed Ltd
Registered in England & Wales
Company number 06707839
Registered office: Suite 235, 77 Beak St, London, W1F 9DB

On Tue, Mar 8, 2011 at 12:07 PM, A. Mcbomb [email protected] wrote:

end
end

Can anyone help me put some logic in for just the value of the completed
param?

you have a form inside another form. change it to

<% form_for @project do |f| -%>

Project Name <%= f.text_field :name %> <%= f.label :completed %> <%= f.select(:completed, ["No", "Yes"] )%>
<%= submit_tag 'Submit' %> <%= form_tag %> <% end -%>

catch what you want like this params[:project][:completed]

thanks alot for all the help!

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