/ जालसाजी पर एक मेलर त्रुटियों के लिए /_ फॉर्म का पुन: उपयोग करना

फर्जीवाड़े के लिए मेलर त्रुटियों के मद्देनजर form_for का उपयोग करना - रूबी-ऑन-रेल्स -3, एक्शनमेलर, एक्शनव्यू, फॉर्म-हेल्पर्स

मेरे पास टेम्पलेट new.html में एक form_for है।एरब जहां मैं डीबी को सामान्य बचत करता हूं और फिर सफलता पर एक ई-मेल करता हूं। मैं चाहता हूं कि मेलर शरीर के समान new.html.erb भेजें और मॉडल को पास करें ताकि फ़ॉर्म पूरी तरह से आबाद हो जाए। मुझे निम्नलिखित त्रुटि हो रही है:

undefined method `protect_against_forgery?" for #<#<Class:0x000000049d7110>:0x000000049d4690>

Form_for टैग के तुरंत बाद लाइन पर (क्योंकि यह मेरे द्वारा सोचे गए टोकन टैग को इंजेक्ट कर रहा है)। क्या कोई ऐसा तरीका है जिससे मैं इसे दरकिनार कर सकूं ताकि मैं मेलर में टेम्पलेट का फिर से उपयोग कर सकूं?

यहाँ मेलर कोड कैसा दिखता है

class MaintenanceMailer < ActionMailer::Base
helper :application

def request_email(maintenance)
mail :to => maintenance.community.email, :subject => "Maintenance" do |format|
format.html { render :layout => "default", :template => "maintenance/new" }
end
end
end

उत्तर:

उत्तर № 1 के लिए 6

इसे एक सहायक में जोड़ें जो केवल आपके मेलर टेम्पलेट का उपयोग करता है:

    def protect_against_forgery?
false
end

लेकिन यह सुनिश्चित कर लें कि प्राप्त करने वाला कंट्रोलर वेरिफिकेशन_ऑथेंटिसिटी_टोकन को छोड़ देता है, और उस फॉर्म को जो भी करता है, उसके लिए सेशन जैकिंग ठीक है।


जवाब के लिए 4 № 2

मैंने सैम सी सुझाए गए तरीके का इस्तेमाल किया, लेकिन इसे थोड़ा समायोजित किया। रेंडर टू स्ट्रिंग को कॉल करने से पहले, मैं इस विधि को ओवरराइड करता हूं।

ApplicationHelper.send(:define_method, :protect_against_forgery?) { false }
html = render_to_string(template: "quotations/show", layout: "application_print")

यह रक्षित_गैनेस्ट_फॉर्गी को ओवरराइड करता है? विधि अस्थायी रूप से।


जवाब के लिए 0 № 3

मुझे घर के बिक्री पृष्ठ में काम करने में समान समस्या थी। क्या आप अपने ईमेल टेम्पलेट में form_for का उपयोग कर रहे हैं? क्योंकि यह मेरी परेशानी थी, मैंने इसे form_for के बजाय div का उपयोग करके बनाया और सभी ने ठीक काम किया।


जवाब के लिए 0 № 4

आप ऐसी त्रुटियों से बचने के लिए बस template_new.html में form_for की प्रामाणिकता को बंद कर सकते हैं

आप इसके लिए जाँच कर सकते हैं मैं रेल फ़ॉर्म से प्रामाणिकता_टोकन कैसे निकालूं?