如何让用户只在url_field中添加他们的@name而不是整个Twitter链接?

时间:2012-08-05 20:55:09

标签: ruby-on-rails devise

在我的Rails应用程序中,我有一个用户模型(Devise),其中包含Twitter的url_field。

现在我在我的展示页面中有这个:

<%= link_to @deal.user.company_twitter, @deal.user.company_twitter, :class => "comp_twitter" %>

它显示了展示页面中的整个链接(甚至http://),这是因为我的url_field使用户添加“http://”,或者它不会验证链接。

我希望用户在创建个人资料时只添加他们的“@name”而不是整个Twitter链接。我还想在“show”页面中只显示@name而不是Twitter链接。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

不要使用url_field,而应使用常规string数据库字段,例如twitter_username。注册时,让用户输入他们的用户名,例如foo

要获取Twitter帐户的真实网址,请在user.rb模型中创建新方法:

def twitter_url
  "http://twitter.com/#{self.twitter_username}"
end

此优点是,此时,在您的模型中,您可以添加自定义验证,以便在用户提交twitter_username后检查此URL是否确实存在。

最后,在您的视图中使用它而不仅仅是URL:

<%= link_to "@#{@user.twitter_username}", @user.twitter_url %>

这将呈现:

<a href="http://twitter.com/foo">@foo</a>