如何从模板生成XML?(Lead#create中的NoMethodError)(Rails)



我想从我的模板sendfile.xml.erb生成一个XML文件,并通过Lead create方法的电子邮件发送。

当我在lead.rb中生成CSV而不使用模板时,它工作得很好。

但是,我如何让Rails在lead.rb中呈现XML模板呢?

铅.rb:

class Lead < ApplicationRecord
def self.generate_xml
CSV.generate do |xml|
xml << LeadsController.render('leads/sendfile')
end
end

引线_控制器.rb:

class LeadsController < ApplicationController
before_action :set_lead, only: [:show, :edit, :sendfile, :update, :destroy]
before_action :authenticate_user!, except: [:show, :new, :create]
skip_before_action :verify_authenticity_token
def sendfile
@lead = Lead.find_by_id(params[:id])
respond_to do |format|
format.html
format.xml #{ send_data @lead.generate_xml, filename: "Leads (#{Date.today.strftime("%A %b %d")}).xml"  }
response.headers['Content-Type'] = 'text/xml'
response.headers['Content-Disposition'] = "attachment; filename=hi.xml"   
end
end
# GET /leads/new
def new
@lead = Lead.new
end
def create
@lead = Lead.new(lead_params)
#csv = Lead.generate_csv
respond_to do |format|
if @lead.save
xml = Lead.generate_xml
#message = "You got a new lead!"
#TwilioTextMessenger.new(message).call
LeadMailer.daily(@lead,@lead.user,@lead.vehicle,xml).deliver
format.html { redirect_to @lead, notice: 'Lead was successfully created.' }
format.json { render :show, status: :created, location: @lead }
else
format.html { render :new }
format.json { render json: @lead.errors, status: :unprocessable_entity }
end
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_lead
@lead = Lead.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def lead_params
params.require(:lead).permit(:user_id, :messengeruser_id, :vehicle_id, :phone, :email, :vehicle, :first_name, :last_name, :'first name', :'last name', :gender, :source, :locale, :profile_pic_url, :'profile pic url', :timezone, :messenger_user_id, :chatfuel_user_id, :'messenger user id', :'chatfuel user id', :ref, :country, :city, :state, :zip, :address, :latitude, :longitude, :map_url, :last_visited_block_name, :last_visited_block_id, :last_clicked_button_name, :last_user_freeform_input, :'last visited block name', :'last visited block id', :'last clicked button name', :'last user freeform input')
end
end

@正在保存潜在客户

我可以打开http://localhost:3000/leads/sendfile/36.xml没有问题。

路线.rb

get '/leads/sendfile/:id', to: 'leads#sendfile'

sendfile.xml.erb

<?xml version="1.0" encoding="UTF-8"?>
<?ADF VERSION="1.0"?>
<adf>
<prospect>
<id sequence="Craigslist" source="Craigslist_NADASEO"></id>
<requestdate><%= Date.today.strftime("%A %b %d, %Y") %></requestdate>
<vehicle interest="buy" status="<%= @lead.vehicle.vehicle_type %>">
<vin><%= @lead.vehicle.vin %></vin>
<year><%= @lead.vehicle.year %></year>
<make><%= @lead.vehicle.make %></make>

XLM文件稍长。。。

Lead中没有MethodError#创建

如果您正在rails应用程序中使用使用render_to_string-helper方法将其存储在xml文件中。如果您使用的是poro类,则使用net/http请求从rails应用程序下载该文件。

最新更新