gpt4 book ai didi

ruby-on-rails - ruby on rails link_to 新创建的页面

转载 作者:数据小太阳 更新时间:2023-10-29 08:41:18 26 4
gpt4 key购买 nike

我在 rails(3) 中创建了一个名为 contact.html.erb 的项目模型中的新 html 页面我有兴趣从不同的页面链接到它,我添加了代码:

<%= link_to 'contact', contact_project_path(@project) %>

项目是一个模型 belongs_to一个用户(这是联系页面中的联系人)。

此链接给我一条错误消息,指出 contact_project_path不存在。我知道我需要在某处定义它,但我不知道在哪里或如何定义。我希望每个项目的页面都是特定的。我在 project_controler 中创建了一个 Action 命名联系人并将其留空。

我错过了什么?

我已经搜索了很长时间的解决方案,但在其他任何地方都没有找到这个问题的答案。我知道它有点基础,但我别无选择。

最佳答案

-修改后的答案-根据评论,我看到您不是在尝试关联联系人模型,只是一个 View 。在这种情况下,您仍然需要更改路由文件,但您需要决定是要为所有项目获取一个联系人页面,还是为每个项目获取一个联系人 View 。即:

# Collection Contact
example.com/projects/contact # IE One contact view for all projects

# Member Contact
example.com/projects/1/contact # IE One contact view per project

无论哪种方式,您都需要在路由文件中为您的项目资源使用一个 block 。因此,如果您希望集合(所有项目)有一个联系页面,请执行以下操作:

resources :projects do
collection do
get 'contact'
end
end

或者,如果您希望每个成员有一个联系人 View (每个项目一个),请执行以下操作:

resources :projects do
member do
get 'contact'
end
end

无论哪种方式,这都会为您提供可以放入 link_to

中的辅助方法

对于集合,它应该是 contact_projects_path(无参数),对于成员,它应该是 contact_project_path(@project)(将项目作为参数传递。

可以使用get post put delete 或者match 作为参数在集合或成员 block 中,这只是告诉 Rails 在该 URL 处理什么样的请求,以及生成什么帮助程序。对于普通 View ,您需要 GET 请求。

我希望这最终能回答您的问题:)

-原始答案-

这是为了路由到模型,而不仅仅是 View

添加到你的 routes.rb:

resources :projects do
resource :contact
end

如果我正确理解你的问题,那应该创建一个名为 project_contact_path() 的助手。

这条记录将是 projects/123/contact.

如果您希望每个项目有多个联系人,则需要将其设为复数(资源:联系人)。那么您的记录将类似于 projects/123/contacts/123

参见 http://guides.rubyonrails.org/routing.html

如果每个项目只有一个联系人,您将使用 link_to( project_contact_path(@project) ) 链接到此,或者 link_to( project_contact_path(@project,@contact) ) 如果每个项目有多个联系人。

关于ruby-on-rails - ruby on rails link_to 新创建的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4703367/

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