Ruby on rails 如何创建链接到和操作的href标记';创建';
我想创建一个href标记,如Ruby on rails 如何创建链接到和操作的href标记';创建';,ruby-on-rails,ruby,Ruby On Rails,Ruby,我想创建一个href标记,如href=contacts/create。在我的联系人控制器中,我有一个创建获取操作。我知道这违反了rails的惯例。我仍然需要使用options={controller=>'contacts',action=>'create'}创建上面的链接。它适用于您提到的任何其他任意操作名称,这违反了rails惯例,但如果绝对必要,您可以从控制器执行此操作: options = {controller=> 'contacts', action=>'create'}
href=contacts/create
。在我的联系人控制器中,我有一个创建获取操作。我知道这违反了rails的惯例。我仍然需要使用options={controller=>'contacts',action=>'create'}
创建上面的链接。它适用于您提到的任何其他任意操作名称,这违反了rails惯例,但如果绝对必要,您可以从控制器执行此操作:
options = {controller=> 'contacts', action=>'create'}
view_context.link_to url_for(options)
如果需要href仅作为路径,可以执行以下操作:
options = {controller=> 'contacts', action=>'create'}
view_context.link_to url_for(options.merge(only_path: true))
正如您所提到的,这是违反rails惯例的,但如果绝对必要,您可以从控制器执行此操作:
options = {controller=> 'contacts', action=>'create'}
view_context.link_to url_for(options)
如果需要href仅作为路径,可以执行以下操作:
options = {controller=> 'contacts', action=>'create'}
view_context.link_to url_for(options.merge(only_path: true))
首先,这真是个坏主意。你不仅仅是在蔑视传统——你让自己和你的用户处于一个非常糟糕的时期,因为例如,按下后退和前进按钮会导致资源被一次又一次地创建。而且,保证有更好的方法来解决您试图做的任何事情,例如:
# a "discrete form"
<%= button_to "Create contact", contacts_path, method: :post %>
# or use the rails ujs
<%= link_to "Create contact", contacts_path, method: :post %>
您现在可以执行以下操作:
<%= link_to "Create", { controller: 'contacts', action: 'create' } %>
恭喜你,你断了互联网。首先,这真是个坏主意。你不仅仅是在蔑视传统——你让自己和你的用户处于一个非常糟糕的时期,因为例如,按下后退和前进按钮会导致资源被一次又一次地创建。而且,保证有更好的方法来解决您试图做的任何事情,例如:
# a "discrete form"
<%= button_to "Create contact", contacts_path, method: :post %>
# or use the rails ujs
<%= link_to "Create contact", contacts_path, method: :post %>
您现在可以执行以下操作:
<%= link_to "Create", { controller: 'contacts', action: 'create' } %>
祝贺您,您断开了Internet。您可以使用硬编码路径选项:
<%= link_to "Create", "contacts/create" %>
<%= link_to "Create", { controller: "contacts", action: "create" } %>
或Rails生成的路径选项:
<%= link_to "Create", "contacts/create" %>
<%= link_to "Create", { controller: "contacts", action: "create" } %>
这不仅违背了Rails的约定,而且违背了HTTP的使用。这通常会导致你无法提前预测的严重问题。网络爬网只是其中之一,谷歌机器人(GoogleBot)只是通过对页面进行爬网,就意外地在数据库中创建了一个新联系人。或者给那些发现你有一个create链接的孩子编写脚本,然后快速连续地发送100000次点击
许多其他问题也会发生类似的情况,包括在一个众所周知的时间,Google Chrome预取从页面获取URL以“加速用户体验”;使用这种技术的网站都能感受到这一点。这不是空闲警告或样式问题:这可能会对您的站点造成灾难性影响。您可以使用硬编码路径选项:
<%= link_to "Create", "contacts/create" %>
<%= link_to "Create", { controller: "contacts", action: "create" } %>
或Rails生成的路径选项:
<%= link_to "Create", "contacts/create" %>
<%= link_to "Create", { controller: "contacts", action: "create" } %>
这不仅违背了Rails的约定,而且违背了HTTP的使用。这通常会导致你无法提前预测的严重问题。网络爬网只是其中之一,谷歌机器人(GoogleBot)只是通过对页面进行爬网,就意外地在数据库中创建了一个新联系人。或者给那些发现你有一个create链接的孩子编写脚本,然后快速连续地发送100000次点击
许多其他问题也会发生类似的情况,包括在一个众所周知的时间,Google Chrome预取从页面获取URL以“加速用户体验”;使用这种技术的网站都能感受到这一点。这不是一个无聊的警告或风格问题:这可能会给你的网站带来灾难性的影响。哈哈“恭喜你打破了互联网”我喜欢这样:幸好这是遗留代码!!有人做了一些很好的工作:(哈哈“恭喜你打破了互联网”我喜欢这样:幸好这是遗留代码!!有人做了一些很好的工作:(@yatishmehta如果这已经回答了您的问题,请单击答案旁边的复选标记接受它。复选标记将变为绿色。我们也非常感谢您的投票:D@yatishmehta如果这已回答了您的问题,请单击答案旁边的复选标记接受它。复选标记将变为绿色。投票也总是很受欢迎的。:D