On Jan 5, 2011, at 5:21 PM, Colin Law wrote:

On 5 January 2011 21:45, Brian Ablaza <[email protected]> wrote:
I have an app that manages tapes. Each tape has a number (separate from
the record ID in MySQL).

When a tape is added, the number field can be filled in. But when the
record is subsequently edited, the number should not be editable.

Both the "new" and "edit" views include (render) the same form partial.
What would be considered best practice here?

1. Logic in the partial that checks to see if the action is "new" or
"edit", and changes the form appropriately

2. Two different partials.

3. Remove the partial rendering and just have the "new" and "edit" views
be complete forms

Also don't forget that just making the field read only in the form
will not prevent someone with malicious intent constructing a POST
with a value for that attribute.  Therefore, if that is a worry for
you, make sure you prevent that field from being updated in the update
action.

Colin

Rather than check the action, I'd suggest checking whether the object was new.

<% if f.object.new_record? %>
  <%= f.text_field :number %>
<% else %>
  <%= f.object.number %>
<% end %>

But still protect the number attribute from mass-assignment and handle the field in the create action.

-Rob

Rob Biedenharn          
[email protected]     http://AgileConsultingLLC.com/
[email protected]               http://GaslightSoftware.com/

--
You received this message because you are subscribed to the Google Groups "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.

Reply via email to