Forum: Ruby on Rails form_remote_tag and form parameters problem in edge

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.
Tarsoly András (Guest)
on 2007-04-04 18:12
(Received via mailing list)
Hi guys,

anybody encountered such a problem that <% form_remote_tag ... %>
doesn't send the data present in the form on submit?

Let me explain:

I have Products and the products have Properties.

# routes.rb
map.resources :products do |product|
  product.resources :properties
end

I have a product edit form, which lists all the properties currently
assigned to the product row by row, simple.

# _properties.rb
<% @product.properties.each do |property| %>
    <tr>
        <td>
        <% form_remote_tag( :url => property_path( @product,
property ), :method => :put ) do %>
            <input id="property_name" name="property[name]" value="<%=
property.name %>" />
            <input id="property_value" name="property[value]" value="<
%= property.value %>" />
            <%= submit_tag "Save" %>
        <% end %>
        </td>
    </tr>
<% end %>

The property controller takes care of updating:

# properties_controller.rb
def update
  return false unless request.xhr?
  @property = ProductProperty.find( params[:id] )

  # debug
  logger.info "PARAMS: #{params.inspect}"

  @property.update_attributes( params[:property] )
  @product = Product.find( params[:product_id] )
end

All fine and dandy, there are 3 properties listed, I changed the
values in the form and click save next to it. Log says:

# development.log
ProductProperty Columns (0.007000)   SHOW FIELDS FROM
product_properties
ProductProperty Load (0.002000)   SELECT * FROM product_properties
WHERE (product_properties.`id` = 18)
PARAMS: {"action"=>"update", "product_id"=>"1", "id"=>"18",
"controller"=>"properties"}

NoMethodError (You have a nil object when you didn't expect it!)
...

Of course nil, because params[:property] is nil and i'm trying to
udpate_properties( ) on it. Log says, no additional parameters passed
along with the request, but which were present in the form_remote_tag
declaration.

Some additional info: same situation, plain <% form_tag ... %> works
like a charm. Seems like a bug in <% form_remote_tag ... %>.

Am I missing something? Tried everything at my disposal, still no
luck. I'm on edge rails, latest revision.

Thanks and my best regards,
András
Bill W. (Guest)
on 2007-04-04 18:56
(Received via mailing list)
Hi Tarsoly,

Tarsoly András wrote:

> property.name %>" />
>             <input id="property_value" name="property[value]" value="<
> %= property.value %>" />
>             <%= submit_tag "Save" %>
>         <% end %>
>         </td>
 >    </tr>
> <% end %>

> Of course nil, because params[:property] is nil and i'm trying to
> udpate_properties( ) on it. Log says, no additional parameters passed
> along with the request, but which were present in the form_remote_tag
> declaration.

I think the problem you're having is probably related to the fact that
you're hardcoding the form elements rather than letting Rails know about
them.  Try switching to text_field or text_field_tag and see if that
doesn't
help.

Best regards,
Bill
This topic is locked and can not be replied to.