在我的Rails应用程序中,我有一个用于Twitter的带有url_field的用户模型(Devise)。
现在我在我的节目页面上有这个:
<%= link_to @deal.user.company_twitter, @deal.user.company_twitter, :class => "comp_twitter" %>
它在显示页面中显示整个链接(甚至是http://
),这是因为我的url_field让用户添加"http://",否则它不会验证链接。
我希望用户在创建个人资料时只添加他们的"@name",而不是整个Twitter链接。我还想在"显示"页面中只显示@name,而不是Twitter链接。我该怎么做?
只需不使用url_field
,而是使用常规的string
数据库字段,如twitter_username
。注册时,让用户输入他们的用户名,例如foo
。
要获得Twitter帐户的真实URL,请在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>