从Ruby on Rails中的用户提交的输入生成URL

时间:2017-01-08 21:41:57

标签: ruby-on-rails ruby

我希望用户在表单中提交标题和网址链接。 然后我想将该标题呈现为包含网址的链接。 因此,在下面的表格中,标题将包含“Stack Overflow”,内容将为“www.stackoverflow.com”

<%= form_for @post, url: user_posts_path(@user) do |f| %>
<%= f.text_field :title, :class => 'form-control', :type => "title", :placeholder => "title" %>
<%= f.text_field :content, :class => 'form-control', :type => "text", :placeholder => "URL" %>
<%= f.submit "Submit" %>
<% end %>

我仍然对Rails的某些方面感到困惑,并且在我所要求的文档中似乎没有任何明确的内容。下面的代码是我现在如何路由的东西,它通过将用户带到帖子的节目路线来工作。

<%= link_to post.title, user_post_path(post.user_id, post.id) %>

我想要的是拥有这样的东西

<%= link_to post.title, url(post.content)%>

而不是user_post_path它将是帖子的实际内容,在这种情况下是post.content,这将是“www.stackoverflow.com”我不知道这是否可能,因为我是新来的RoR但任何建议非常感谢解决这个问题,谢谢!

2 个答案:

答案 0 :(得分:2)

link_to将接受一个简单的字符串作为href。我建议使用URI.parse,以确保文本是有效的网址。

<%= link_to post.title, URI.parse(post.content) %>

您还应确保content属性中保存的文本仅包含URL。您可以在保存记录之前使用URI.extract方法在字段,控制器或模型回调中使用JS来实现此目的。

答案 1 :(得分:0)

您可以直接将查询参数传递给您的链接:

link_to "Ruby on Rails search", controller: "searches", query: "ruby on rails"

<a href="/searches?query=ruby+on+rails">Ruby on Rails search</a>