在我的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链接。我怎么能这样做?
答案 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>