如何将link_to放在rails中的字符串中

时间:2014-07-17 21:32:44

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

在这里,我发现了类似的问题Rails 3 link_to inside a string,但不知何故它不适用于我的场景。

我有一个@matter对象,其中包含以下网址。

@matter = url_for(:controller => 'news', :action => 'news_view',:id => @news.token)

我正在尝试将此链接放在文本中,这可以通过简单地添加“#{@ matter}”来完成。但是我想把整个链接的别名设置为'VIEW NEWS',当用户点击它时,它会重定向到原始网址。

使用此我必须发送到我的链接邮件和移动文本。我得到它用于发送电子邮件,但无法用于发送文本,因为:body需要消息API的字符串格式。

我已经按照上面提到的SO帖子,但它们根本不适合我。

"\"#{@news.sender.first_name} #{@news.sender.last_name} just sent you a invite.\" Click on link raw('<%= link_to 'View Invite', @method) %>') ")

如果可能的话,我可以在<a href ="#{@matter}", view invite </a>之类的字符串中使用html。

需要帮助。

我正在使用twilio使用以下API发送文字。

  @client = Twilio::REST::Client.new @account_sid, @auth_token
  @client.account.messages.create(:from => '+123456789', :to => '+1'+@phone, 
                                  :body => "#{@matter}" )

2 个答案:

答案 0 :(得分:7)

您可以执行以下操作:

"#{@news.sender.first_name} #{@news.sender.first_name} just sent you an invite."
"Click on link to #{link_to 'View invite', @matter}".html_safe

如果在您的控制器中使用,您可以访问view_context

def show
  # ...
  @message  = "#{@news.sender.first_name} #{@news.sender.first_name} just sent you an invite."
  @message << "Click on link to #{view_context.link_to 'View invite', @matter}"

  @client = Twilio::REST::Client.new @account_sid, @auth_token
  @client.account.messages.create(:from => '+123456789', :to => '+1'+@phone, 
                              :body => @message.html_safe )
end

答案 1 :(得分:0)

由于隐私问题,我们似乎无法在短信中包含超链接。这篇文章是这么说的 create hyperlink in sms in iPhone。这就是为什么虽然我尝试了MrYoshiji的答案,但我并没有像我想的那样正确地获得文本。