15 Stimmen

Wie man full-path in Rails 3 link_to-Anweisung enthalten?

Ich versuche, eine Rails link_to-Anweisung innerhalb einer Mailer-E-Mail zu setzen, die den vollständigen Pfad enthält (dh - http://localhost/contacts/id/confirm ). Die link_to-Anweisung, die ich versuche, funktioniert in meiner Standardansicht in /pages/options, aber nicht in der Mailer-E-Mail.

Hier ist mein /pages/options Controller Code:

class PagesController < ApplicationController
    def options
    end
end

Und hier ist die Seiten/Optionen-Ansicht:

<div>
    <%= link_to "here", :controller => "contacts", :action => "confirm", 
    :only_path => false, :id => 17 %>
</div>

Wenn ich diesen Link in den folgenden Mailer (welcome_email.html.rb) einfüge, erhalte ich den folgenden Fehler. Für jede Hilfe wäre ich Ihnen sehr dankbar.

<!DOCTYPE html>
<html>
<head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
</head>
<body>
    <%= link_to "here", :controller => "contacts", :action => "confirm",
     :only_path => false, :id => 17 %>
</body>
</html>

Die Fehlermeldung:

RuntimeError in Contacts#create

Showing C:/Documents and Settings/Corey Quillen/My Documents/Dev/Dev    
Projects/my_project
Project/my_project/app/views/user_mailer/welcome_email.html.erb where line #7  
raised:

Missing host to link to! Please provide :host parameter or set  
default_url_options[:host]
Extracted source (around line #7):

4:     <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
5:   </head>
6:   <body>
7:     <%= link_to "here", :controller => "contacts", :action => "confirm", :only_path    
=> false, :id => 17 %>
8:   </body>
9: </html>

0voto

Peter DeWeese Punkte 17855

Wenn die vollständige URL immer mit der Anfrage des Benutzers übereinstimmt, können Sie alternativ die actionmailer-with-request gem, damit die Anfrage an den Action Mailer weitergeleitet wird, dann können Sie in Ihrer Mailvorlage auf die Anfrage verweisen, z. B:

<%= link_to "log into the admin page", request.base_url + admin_root_path %>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X