Why render doesn't work

I use render in a view page like this:

<% form_for :project do |form| %> <table>      <tr>   <td>   <%=   select_tag:project_selection,options_for_select(@project_names)   %>   <%=   observe_field :project_selection,     :frequency => 0.5,     :update => 'project_version_ajax',     :url => {:action => 'update_project_selection'} %>   </td>     </tr>     <div id='project_version_ajax'>   <%= render :partial=>'project_version' %>     </div> </table>

<% end %>

In update_project_selection controller:

def update_project_selection   ...   render :partial=>'project_version' end

when the select box changed its value, the controller is invoked but the _project_version.html.erb doesn't update.

I use render in a view page like this:

<% form_for :project do |form| %> <table>     <tr> <td> <%= select_tag:project_selection,options_for_select(@project_names) %> <%= observe_field :project_selection,    :frequency => 0.5,    :update => 'project_version_ajax',    :url => {:action => 'update_project_selection'} %> </td>    </tr>    <div id='project_version_ajax'> <%= render :partial=>'project_version' %>    </div> </table>

I don't believe it's legal HTML to have a div there.

Fred

Frederick Cheung wrote:

I don't believe it's legal HTML to have a div there.

Fred

Why? Could you tell me what wrong with my code?

Frederick Cheung wrote:

I don't believe it's legal HTML to have a div there.

Fred

Why? Could you tell me what wrong with my code?

That's just the way it is, divs aren't allowed there (just as you
can't do <span><div></div></span> either). Try putting your html
through the w3c validator

Fred

Frederick Cheung wrote:

That's just the way it is, divs aren't allowed there (just as you can't do <span><div></div></span> either). Try putting your html through the w3c validator

Fred

A render must be in an element. If I can't use div in this case, how can I render it?

Quoting Zhao Yi <rails-mailing-list@andreas-s.net>:

Frederick Cheung wrote: > That's just the way it is, divs aren't allowed there (just as you > can't do <span><div></div></span> either). Try putting your html > through the w3c validator > > Fred A render must be in an element. If I can't use div in this case, how can I render it?

Your element (the <div>...</div>) isn't in a valid place. You have it between a row and the end of the table. Is it supposed to straddle the table boundary? Either move it into the <td>...</td> or outside the table as appropriate. Or put it in a table row of its own.

Jeffrey