首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将参数传递给新的控制器操作

将参数传递给新的控制器操作
EN

Stack Overflow用户
提问于 2018-04-02 10:02:33
回答 2查看 44关注 0票数 0
代码语言:javascript
复制
Rails 4.21
Ruby 2.5

我有一个具有标准MVC结构的组织模型。

show操作显示组织的视图(名称、联系信息等)。

我添加了一个OrganizationNote MVC结构。

我想要做的是,在组织显示视图中,添加一个"Add Note“按钮,如下所示:

代码语言:javascript
复制
link_to 'Add Note', new_organization_note_path, :class => "btn btn-primary btn-lg"

但我需要将组织id传递给新的OrganizationNote。现在,当我尝试时,调用中没有传递任何参数:

代码语言:javascript
复制
link_to 'Add Note', new_organization_note_path(@organization.id), :class => "btn btn-primary btn-lg"

我没有看到任何传递的参数。

我如何实现这一点?我需要创建什么特殊路由吗?

编辑:

我在routes.rb中添加了以下内容:

代码语言:javascript
复制
resources :organizations do
  resources :organization_notes
end

它产生了以下路由:

代码语言:javascript
复制
organization_organization_notes GET /organizations/:organization_id/organization_notes(.:format) organization_notes#index
POST /organizations/:organization_id/organization_notes(.:format) organization_notes#create
new_organization_organization_note GET /organizations/:organization_id/organization_notes/new(.:format) organization_notes#new
edit_organization_organization_note GET /organizations/:organization_id/organization_notes/:id/edit(.:format) organization_notes#edit
organization_organization_note GET /organizations/:organization_id/organization_notes/:id(.:format) organization_notes#show
PATCH /organizations/:organization_id/organization_notes/:id(.:format) organization_notes#update
PUT /organizations/:organization_id/organization_notes/:id(.:format) organization_notes#update
DELETE /organizations/:organization_id/organization_notes/:id(.:format) organization_notes#destroy

我将链接修改为:

代码语言:javascript
复制
link_to 'Add Note', new_organization_organization_note_path(:organization_id => @organization.id), class: 'btn btn-primary btn-lg'

在organization_notes_controller.rb中,我有:

代码语言:javascript
复制
def new
  @organization_note = OrganizationNote.new
  @organization = Organization.find(params[:organization_id])
end

当我单击Add Note按钮时,我会看到以下消息:

代码语言:javascript
复制
Incomplete response received from application

从日志文件中:

代码语言:javascript
复制
Started GET "/organizations/176/organization_notes/new" for xx.xxx.xxx.xxx at 2018-04-02 03:24:32 +0000
Processing by OrganizationNotesController#new as HTML
  Parameters: {"organization_id"=>"176"}
  [1m[35mUser Load (0.1ms)[0m  SELECT  `users`.* FROM `users` WHERE `users`.`id` = 1  ORDER BY `users`.`id` ASC LIMIT 1
  [1m[36mOrganization Load (0.1ms)[0m  [1mSELECT  `organizations`.* FROM `organizations` WHERE `organizations`.`id` = 176 LIMIT 1[0m
  Rendered organization_notes/_form.html.erb (34.7ms)
  Rendered organization_notes/new.html.erb within layouts/application (35.6ms)
Completed 500 Internal Server Error in 44ms (ActiveRecord: 0.3ms)
EN

回答 2

Stack Overflow用户

发布于 2018-04-02 10:56:00

若要使OrganizationNote%s使用相对于Organization%s的URLS,您需要使用nested resources。这将允许您指定要将备注应用于哪个组织的参数,例如

代码语言:javascript
复制
resources :organizations do
    resources :organization_notes
end

您可以使用rails routes确认路径现在包含一个参数。

(如果您只需要这个相对路由来创建Notes,那么您也可以只使用一个自定义路由,而不是resources函数)。

票数 1
EN

Stack Overflow用户

发布于 2018-04-02 15:45:25

您可以尝试下面的解决方案。

代码语言:javascript
复制
# routes.rb
resources :organizations do
  resources :organization_notes
end

# new method
def new
  @organization = Organization.find(params[:organization_id])
  @organization_note = @organization.organization_notes.build
end

# views
link_to 'Add Note', new_organization_organization_note_path(:organization_id => @organization.id), class: 'btn btn-primary btn-lg'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49604439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档