Rails XML undefined方法`name'代表“preview”:String

时间:2011-09-12 09:53:49

标签: ruby-on-rails ruby ruby-on-rails-3 view-helpers

我的XML错误:

NoMethodError in Admin/xml#index

Showing C:/Rails/asdw/app/views/admin/xml/index.rhtml where line #1 raised:

undefined method `name' for "preview":String

Extracted source (around line #1):

1: <% update_xml("preview") %>
2: 
3: 
4: <h2>Preview/publish</h2>

我的控制器:

def index
    @photographer = Photographer.find(:first)
    #render :layout => false
end 

我的XML助手:

   module XmlHelper
        require 'builder'

            def update_xml(photographer, output="preview") 

                xml = Builder::XmlMarkup.new



                 xml.photographer(:name => photographer.name) do    



                  for group in photographer.groups 
                    xml.group(:name => group.name) do 
                    for project in group.projects 
                        xml.project(:name => project.name) do 
                                    for collection in project.collections
                                        xml.collection(:name => collection.name) do 
                                            for image in collection.images
                                                xml.image(image.description, :url => image.image, :id => image.id)


                                            end 
                                        end     
                                    end 
                        end 
                    end
                    end     
                  end       
                end           


                File.open("#{rails_root}/public/xml/#{output}.xml", "w") do |f|
                  f.puts ("#{xml}")
                end 


        end 






end

更新:

使用<% update_xml(photographer, "preview") %>

NameError in Admin/xml#index

Showing C:/Rails/asdasd/app/views/admin/xml/index.rhtml where line #1 raised:

undefined local variable or method `photographer' for #<#<Class:0x47eb990>:0x47ea238>

新更新使用 <% update_xml(@photographer, "preview") %>

oMethodError in Admin/xml#index

Showing C:/Rails/asdfsadf/app/views/admin/xml/index.rhtml where line #1 raised:

undefined method `groups' for #<Photographer:0x45ca2d8>

Extracted source (around line #1):

1: <% update_xml(@photographer, "preview") %>
2: 
3: <h2>Preview/publish</h2>

2 个答案:

答案 0 :(得分:2)

你可以尝试使用“&lt;%update_xml(摄影师,”预览“)%&gt;”而不是&lt;%update_xml(“preview”)%&gt;在Admin / xml #index中,如果再次出现错误,请告诉我们!

答案 1 :(得分:0)

在您的摄影师模型中确保您拥有groups关联,例如:

has_many :groups