我怎么能让用户只在url_field中添加他们的@name而不是整个Twitter链接呢



在我的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>

最新更新