Forms, view & AJAX best practice help


#1

What i’m trying to get working is I have a controller called
“permissions” and a view “permissions.rhtml”. This view has a hidden div
that contains a form for adding new roles. Its just a single textfield.
Also on the page I have a dropdown list of roles and then underneath
that a div that contains a list of permissions for the role selected in
the dropdown. I have a link that when clicked makes the hidden form div
visible.

What I would like is for the form to submit via AJAX to a new_role
controller method. Any errors would be highlighted in my
“error_messages_for ‘role’” call at the top of the permissions.rhtml
file. When it has submitted correctly the dropdown list would be updated
with the new selection.

What I have got so far is that the page wants to show a “new_form” page?


#2

James W. wrote:

What i’m trying to get working is I have a controller called
“permissions” and a view “permissions.rhtml”. This view has a hidden div
that contains a form for adding new roles. Its just a single textfield.
Also on the page I have a dropdown list of roles and then underneath
that a div that contains a list of permissions for the role selected in
the dropdown. I have a link that when clicked makes the hidden form div
visible.

What I would like is for the form to submit via AJAX to a new_role
controller method. Any errors would be highlighted in my
“error_messages_for ‘role’” call at the top of the permissions.rhtml
file. When it has submitted correctly the dropdown list would be updated
with the new selection.

What I have got so far is that the page wants to show a “new_form” page?

Ok I will rephrase it:

How can I get Error messages to show when using ajax form submit?


#3

James
> How can I get Error messages to show when using ajax form submit?

In the controller’s response to the submit, you will send an html
fragment with RJS code like:

page.replace_html “the_div_id”, :partial => ‘some_html_fragment’

The trick is for the html fragment to include the error displaying Rails
code :

<%= error_messages_for ‘foo’ %>

Alain


#4

or you could do something like this without having to use a partial

     render :update do |page|
        page.replace_html 'address_errors', :inline=>"<%= 

error_messages_for :address %>"
end