The following rails 2.3.x code is not working in rails 3 beta 4:
def
render_crud_table(obj,controller_name,columns,search_fields_array,status_array,actions)
render :partial => ‘shared/crud_maint_table’, :object => obj,
:locals => {:controller_name => controller_name, :columns =>
columns, :search_fields_array => search_fields_array, :status_array =>
status_array, :actions => actions}
end
The partial _crud_maint_table in the shared folder has this code
snippet:
…
- crud_maint_table.each do |a_rec|
%tr{ :class => cycle(“odd”,“even”) }
- columns.each_with_index do |col, i|
%td{ :class => (i == 0 ? ‘first’ : nil) }
…
See the crud_maint_table.each loop? That works in rails 2.3.x but not
in rails 3.
Please advise.
thanks.
Bharat
Bharat R. wrote:
The following rails 2.3.x code is not working in rails 3 beta 4:
def
render_crud_table(obj,controller_name,columns,search_fields_array,status_array,actions)
render :partial => ‘shared/crud_maint_table’, :object => obj,
:locals => {:controller_name => controller_name, :columns =>
columns, :search_fields_array => search_fields_array, :status_array =>
status_array, :actions => actions}
end
The partial _crud_maint_table in the shared folder has this code
snippet:
…
- crud_maint_table.each do |a_rec|
%tr{ :class => cycle(“odd”,“even”) }
- columns.each_with_index do |col, i|
%td{ :class => (i == 0 ? ‘first’ : nil) }
…
See the crud_maint_table.each loop? That works in rails 2.3.x but not
in rails 3.
Please advise.
thanks.
Bharat
Well,I met the same problem.
I had some debug, it seems that rails treat :object as :collection, so
the crud_maint_table actually is the first element of the array obj.
I’m not sure it’s a bug or sth changed since 3 and I haven’t found any
solution
those are the classes you are forgeting to call a property in the view,
seems like you are doing this
<%= @tutors.each do |tutor|%>
<%= tutor%>
it should be
<%= @tutors.each do |tutor|%>
<%= tutor.name %>
Zhuhao Wang wrote:
Bharat R. wrote:
The following rails 2.3.x code is not working in rails 3 beta 4:
def
render_crud_table(obj,controller_name,columns,search_fields_array,status_array,actions)
render :partial => ‘shared/crud_maint_table’, :object => obj,
:locals => {:controller_name => controller_name, :columns =>
columns, :search_fields_array => search_fields_array, :status_array =>
status_array, :actions => actions}
end
The partial _crud_maint_table in the shared folder has this code
snippet:
…
- crud_maint_table.each do |a_rec|
%tr{ :class => cycle(“odd”,“even”) }
- columns.each_with_index do |col, i|
%td{ :class => (i == 0 ? ‘first’ : nil) }
…
See the crud_maint_table.each loop? That works in rails 2.3.x but not
in rails 3.
Please advise.
thanks.
Bharat
Well,I met the same problem.
I had some debug, it seems that rails treat :object as :collection, so
the crud_maint_table actually is the first element of the array obj.
I’m not sure it’s a bug or sth changed since 3 and I haven’t found any
solution
When I tried to use :locals, there are some strange text:
#Tutor:0xd3065c0#Tutor:0xd2e32b0#Tutor:0xd2e3250#Tutor:0xd2e3118#Tutor:0xd2e30b8#Tutor:0xd2e3058#Tutor:0xd2e2ff8#Tutor:0xd2e2f98#Tutor:0xd2e2f38#Tutor:0xd2e2ea8#Tutor:0xd2e2d40#Tutor:0xd2e2cc8#Tutor:0xd2e2c08#Tutor:0xd2e2b78#Tutor:0xd2e2b18
before the content of the partial ,seems like the ID of the elements of
the array I passed in…can’t get rid of it…
radhames brito wrote:
those are the classes you are forgeting to call a property in the view,
seems like you are doing this
<%= @tutors.each do |tutor|%>
<%= tutor%>
it should be
<%= @tutors.each do |tutor|%>
<%= tutor.name %>
I tried,
<%= @tutors.each do |tutor|%>
this line should be
<% @tutors.each do |tutor|%>
fix this,thx
I also find an artical
Getting Up To Speed With Rails 3 says
:object is removed,but you can find an offcial artical here
Layouts and Rendering in Rails — Ruby on Rails Guides which says
:object is still what I expect…
What was the problem? how did you solve it?
surely, got confused there.
Hello,
You are right about the object deprecation in Rails 3. I solved the
problem the same way you did. Instead of passing the table name in
object. I now pass it in the locals hash.
Hope this helps.
Bharat
radhames brito wrote:
What was the problem? how did you solve it?
render :partial =>‘sth’,:object => @sth
is not working in rails 3,it pass the first element of the array
@sth(I’m not sure what would happen if @sth is not an array),thus you
can’t call each in the template.You have to use :locals =>{:sth
=>@sth}.Seems a little complicated,is it a bug or some change not
mentioned in the changelog?
Before I realize this I changed the view a little,added <%= Tutor.each
…%>,and got that text.
change this
render :partial =>‘sth’,:object => @sth
to this , and call the array in the controller like this @sths
then create a partial with the singular , _sth.html.erb
render :partial =>@sths
i always do it that way and works perfectly