2016-11-28 12 views
1

В настоящее время у меня есть код ниже в моем html, который отправляется как электронное письмо. Я хотел бы, чтобы он говорил здесь как гиперссылку. Я видел и знаю, как делать link_to, но я не думаю, что это будет работать в формате html, или если это так, я не уверен, как это сделать правильно.Как сделать мой код ruby ​​в html

Этот код направляет пользователя на ссылку в моем веб-приложении с параметром.

<%=landlord_page_url(@user)%> 

Любая помощь или понимание будут оценены.

+0

Вы используете ActionMailer - если так, то соответствующие представления могут, конечно, использовать методы вспомогательного представления, такие как 'link_to landlord_page_url (@user)' – David

+0

@ Давид Да, я есть. Не могли бы вы объяснить мне, как это будет сделано? –

+0

Вы просто создаете представление обычным способом ... не знаете, как помочь, не зная, как далеко вы получили ... У вас есть ActionMailer ... у вас есть методы, определенные в нем с соответствующими представлениями? – David

ответ

1

ИТАК предполагается, что вы есть ActionMailer под названием MyMailer, с единственным методом send_link. Так же, как и для действия контроллера, установите любые переменные экземпляра в методе send_link, которые будут использоваться в представлении электронной почты для рендеринга.

приложения/отправители/my_mailer.rb

class MyMailer < ActionMailer::Base 
    default from: '[email protected]' 

    def send_link(user, host) 
    @user = user 
    @host = host 

    mail(to: user.email, subject: "Here is your link") 
    end 
end 

Следующих создать представление для этого так же, как вы бы для вида действий контроллера и написать HTML с любым необходимым Еврорадио.

приложение/просмотров/my_mailer/send_link.erb

<p>Dear <%= @user.forename %>,</p> 

<p>Here is your link</p> 

<p><%= link_to 'Click Me', landlord_page_url(@user, host: @host) %></p> 

И вы сделали.

+0

Спасибо, я собирался добавить свой собственный ответ, решение, которое я нашел, очень похоже на ваше. Mine был '<% = link_to" Здесь ", landlord_page_url (@user)%>' –

+0

ah cool ... рад, что вы его отсортировали :) – David

1

Вы можете сделать это, вам просто нужно supply a host to use to generate the URL.

Я думаю, что самый простой способ сделать это с чем-то вроде этого:

application.rb

config.action_mailer.default_url_options = { 
    host: "#{ secrets.uri['host'] }#{ ":#{ secrets.uri['port'] }" if secrets.uri['port'].present? }", 
    protocol: secrets.uri['protocol'] } 

secrets.yml

shared: &shared  
    uri: 
    protocol: http 
    host: localhost 
    port: 3000 

development: 
    <<: *shared 

test: 
    <<: *shared 

production: 

    uri: 
    protocol: <%= ENV['URI_PROTOCOL'] %> 
    host: <%= ENV['URI_HOST'] %> 
    port: <%= ENV['URI_PORT'] %> 
Смежные вопросы