Rails外部URL用作视图中的链接

时间:2017-12-24 16:59:57

标签: ruby-on-rails ruby ruby-on-rails-4

在我的rails应用程序中,我添加了一个字符串,用户可以将链接添加到Facebook个人资料中,它是一个简单的文本字段,但在视图中我希望他们有一个链接。

例如,如果用户添加 www.facebook.com/example ,我希望它在视图中显示为链接,我尝试了link_to approch,而不是指向用户配置文件的链接,它只是刷新页面。

这就是我试过的

<%= link_to(@user.fblink) %>

迁移

class AddFblinkToUsers < ActiveRecord::Migration
  def change
    add_column :users, :fblink, :string
  end
end

用户控制器prams

def user_params
  params.require(:user).permit(:description, :avatar, :location, :fblink, :twlink, :ytlink, :username)
end

3 个答案:

答案 0 :(得分:2)

如果您的表单正确插入了数据,那么您可以为

这样的链接定义一个帮助程序类
#=> helpers/application_helper.rb
def fb_link(user_fb)
    link_to "Facebook", "#{url_with_protocol(user_fb)}", class: "your-class", target: "new"
end
#=> url helper
def url_with_protocol(url)
    /^http/.match(url) ? url : "http://#{url}"
end

然后从视图

= fb_link(@user.fblink)

或者你可以像这样工作

= link_to "Facebook", "#{url_with_protocol(@user.fblink)}", class: "your-class", target: "new"

希望有所帮助

答案 1 :(得分:0)

尝试<%= link_to 'Facebook', @user.fblink %>

link_to方法的第一个参数将显示链接的值。在这种情况下,它是Facebook。第二个参数是url_path。当用户点击Facebook链接时,它将转到url_path。在这种情况下,它是@user.fblink

答案 2 :(得分:0)

除非未将其保存为http

,否则它将无法用作链接

例如,如果您希望Facebook链接正常工作,则应将其作为https://www.facebook.com/example

保存在数据库中

因此,您需要在表单输入字段中输入jquery form validation

然后在您的视图页面中,您可以像

一样使用它
  

我的链接&lt;%= @ user。@ user.fblink%&gt;

请勿在此使用link_to或任何rails视图助手,因为其完整链接已保存在数据库中。

<script>
$( "#myform" ).validate({
  rules: {
    field: {
      required: true,
      url: true
    }
  }, 
 message: {
   field:{ required: 'fb link can't be blank!', url: 'Please enter valid url'}
  }
});
</script>