我有一个链接将参数传递给我的帖子的show动作:
<%= link_to post_show_path( user.id, ref: user.ref ) do %>
go to post
<% end %>
但这会创建一个URL:localhost:3000 / post?ref = 1445461
显然,这会造成重复,导致我的搜索引擎优化。我想将该引用传递给控制器,但不在URL上显示它。我尝试使用方法发布但没有成功:
<%= link_to post_show_path( user.id), ref: user.ref, method: :post do %>
go to post
<% end %>
它没有通过参数[:ref]
首先,我做错了吗?我的语法错了吗?如果没有,我还有其他选择吗?如果是的话,请你把它写下来给我?
我正在考虑进行301重定向,但是在show动作中重定向到同一个show动作显然会创建一个循环。我不想通过另一个动作只是为了进入&#34; show&#34;动作。
那我该怎么办? :)
答案 0 :(得分:0)
默认情况下,html
链接元素不会post
。如果您需要一个能够模仿post
请求的链接,那么您可以使用button_to
提供的rails
帮助程序。即使button_to
生成按钮标记,您也可以使用一些CSS样式并使其看起来像链接。
有关详细信息,请参阅UrlHelper#button_to。
答案 1 :(得分:0)
只需将ref
参数添加到路径中:
<%= link_to "go to post", post_show_path(user.id, ref: user.ref), method: :post %>
但如果你唯一担心的是SEO重复,你也可以坚持使用GET请求并使用rel=nofollow
directive:
<%= link_to "go to post", post_show_path(user.id, ref: user.ref), rel: "nofollow" %>
更新:如果您需要的是多个网址指向同一页面(从搜索引擎优化的角度来看),那么您可能会使用规范网址,可能还具有301重定向,如例如所描述的here或here。然后谷歌(和其他人)将此页面编入单页,尽管多个网址会指向它。