gpt4 book ai didi

ruby-on-rails - Rails 中的链接和路线

转载 作者:行者123 更新时间:2023-12-02 08:33:04 24 4
gpt4 key购买 nike

Rails 4.1
Ruby 2.1.1

我有一个应用程序,我需要在其中显示指向 Controller 显示方法的链接。据我所知,像这样的事情会做到这一点:

<%= link_to "Agent", agents_path(:id => agent.id), :class => "btn btn-warning" %>

但是当 Rails 生成链接时,它是这样的:

http://mydomain/agents?id=9

我需要的是

http://mydomain/agents/9. 

当我手动输入时,我得到代理/显示 View 。我如何到达那里?

在我的 route ,我没有为特工做任何特别的事情。这是 routes.rb 中的相关代码:

resources :agents

这意味着它将生成所有路由。

rake 路由输出:

agents GET    /agents(.:format)               agents#index
POST /agents(.:format) agents#create
new_agent GET /agents/new(.:format) agents#new
edit_agent GET /agents/:id/edit(.:format) agents#edit
agent GET /agents/:id(.:format) agents#show
PATCH /agents/:id(.:format) agents#update
PUT /agents/:id(.:format) agents#update
DELETE /agents/:id(.:format) agents#destroy

我在生成路由时没有遇到任何错误

解决方案:

抱歉,我使用的是 agent_path,而不是 agents_path。我曾经尝试过 agents_path,作为我尝试过的事情之一。问题是我有两种不同的看法。其中,我使用了正确的语法:

<%= link_to "Agent", agent_path(agent.id), :class => "btn btn-warning" %>

在另一个我使用的是:

<%= link_to "Agent", agents_path(:id => agent.id), :class => "btn btn-warning" %>

我一直在对其中一个进行更改,而实际上正在渲染另一个。我将正确的语法放在了部分中,现在它工作正常。这个故事的寓意是始终使用部分,即使你认为你不需要它们。

最佳答案

您需要 agent_path 而不是 agents_path,并且不需要指定 id。这会工作得很好:

<%= link_to "Agent", agent_path(agent), :class => "btn btn-warning" %>

每当对路由有疑问时,您可以随时运行:

bundle exec rake routes

您将能够看到所有现有路线及其命名。

关于ruby-on-rails - Rails 中的链接和路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24748210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com