ruby - 添加 View ,然后在 Rails 中正确路由它

标签 ruby ruby-on-rails-4 activerecord

大家好, 我正在使用 Rails 4.2.0 所以我创建了三个脚手架,但需要为我的模型之一添加额外的 View 。

我有一个站点和驻留模型,我希望完成的是创建一个通过站点显示页面上的链接直接返回到站点的驻留者。

在我的站点 Controller 中,我有以下内容。

def new_site_resident
  @site.residents.create(resident_params)
end

def resident_params
  params.require(:resident).permit(:site_id, :unit_number, :f_name, :m_name, :l_name, :dob)
end

我有我的路线文件夹

get "/sites/:id/new_site_resident"

并尝试获取“/sites/new_site_resident

当我使用 get "/sites/new_site_resident 时,它会返回此错误:

Couldn't find Site with 'id'=new_site_resident

^^ 我确信这告诉我它正在寻找一个以此为 id 的网站。

当我在routes.rb中使用get“/sites/id/new_site_resident”时,然后尝试转到: http://localhost:3000/sites/1/new_site_resident它给出的错误是:

No route matches [GET] "/sites/1/new_site_resident"

不太确定该去哪里?但正如我之前所说,我希望能够查看该网站,然后能够直接在该链接中创建一个与该网站关联的驻留程序,而无需手动输入网站 ID,因为最终用户会知道该网站id 是。

当前的routes.rb 文件。

Rails.application.routes.draw do

  root 'home#index'

  resources :sites
  resources :vehicles
  resources :residents

  get "/sites/:id/new_site_resident"

  devise_for :users, controllers: { registrations: "registrations" }  

最佳答案

要创建操作的路由,您可以使用资源:

resources :sites do
  member do
    get :new_site_resident
  end
end

然后你就可以删除

get "/sites/:id/new_site_resident"

关于ruby - 添加 View ,然后在 Rails 中正确路由它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29911752/

相关文章:

ruby 中的xml差异?

ruby - Ruby 中奇怪的局部变量行为

ruby - 使用 gem 安装 json 时出错。无法构建 gem native 扩展

ruby-on-rails - ActiveRecord - 查询多态关联

ruby-on-rails - Rails 3.0 中的 Arel 究竟是什么?

ruby-on-rails - 我正在尝试使用 Action 电缆在 rails 5 中的两个 friend 之间创建聊天,但是所有用户都可以查看该消息,无论是否是 friend

ruby-on-rails - 如何创建这个 `through``关联?

ruby - simple_form 和自定义验证消息

mysql - 复杂的 Sql 查询到 RoR ORM

mysql - 如何获取与列表内容完全匹配的数据库条目