Rails 4.2.1与Ruby 2.5:如何向新组织笔记控制器传参
没问题,我来帮你搞定组织ID传递的事儿!
解决方案
首先咱们得先调整路由结构,让OrganizationNote嵌套在Organization下,既符合RESTful规范,也能自然传递组织ID:
在config/routes.rb里修改路由:
resources :organizations do resources :organization_notes, only: [:new, :create] end
接下来,修改你在Organization show视图里的link_to代码,把当前组织的ID传递进去:
link_to 'Add Note', new_organization_organization_note_path(@organization), class: "btn btn-primary btn-lg"
提示:可以运行rake routes命令确认嵌套路由生成的具体路径名称,确保和代码里的一致
然后,在OrganizationNotesController的new动作里,接收传递过来的organization_id,并初始化关联的笔记对象:
def new @organization = Organization.find(params[:organization_id]) @organization_note = @organization.organization_notes.new end
最后,在organization_notes/new.html.erb的表单里,加上隐藏字段保存组织ID,确保创建笔记时能正确关联到对应组织:
<%= form_for(@organization_note) do |f| %> <%= f.hidden_field :organization_id, value: @organization.id %> <!-- 这里放你的其他表单字段 --> <%= f.submit 'Save Note' %> <% end %>
另外别忘了在控制器的强参数里允许organization_id:
def organization_note_params params.require(:organization_note).permit(:content, :organization_id) # 替换成你实际需要的字段 end
这样操作后,点击「Add Note」按钮就能带着当前组织ID跳转到新建笔记页面,创建的笔记也会自动关联到对应的组织啦!
内容的提问来源于stack exchange,提问作者EastsideDev
相关产品推荐
相关产品推荐

