Ruby on rails 从自定义管线插入到2个表格

Ruby on rails 从自定义管线插入到2个表格,ruby-on-rails,Ruby On Rails,我有一个Rails应用程序,用户可以从索引页的数据表(cosmics)中进行选择。 我在该页面上有一个按钮,它连接到一个自定义路由开始\u批处理。路由显示在rake:routes上,但没有GET或PUT 当按下它时,我想在另外两个表中创建行:批处理和批处理详细信息 相反,当我按下按钮时,Rails正试图转到cosmics控制器的显示操作 rake:routes start_batch /cosmics/start_batch(.:format)

我有一个Rails应用程序,用户可以从索引页的数据表(cosmics)中进行选择。 我在该页面上有一个按钮,它连接到一个自定义路由开始\u批处理。路由显示在rake:routes上,但没有GET或PUT

当按下它时,我想在另外两个表中创建行:批处理批处理详细信息

相反,当我按下按钮时,Rails正试图转到cosmics控制器的显示操作

rake:routes

start_batch        /cosmics/start_batch(.:format)                      cosmics#start_batch
cosmics\u控制器

def start_batch
  @batch = Batch.create!(:status => 'created',:status_timestamp => Time.now)
  @cosmics.where(:selected == true) do |cosmic|
    @batch_detail = BatchDetail.create!(:batch_id => @batch.id, :gene => @cosmic.gene,   :mut_freq => @cosmic.mut_freq)
    @batch_detail.save
  end
end
routes.rb

resources :batches do
  resources :batch_details
end

resources :cosmics 
match '/cosmics/start_batch', :to => 'cosmics#start_batch', :as => 'start_batch'
<%= link_to 'Process', start_batch_path, :class =>"btn btn-primary" %>
cosmics/index.html.erb

resources :batches do
  resources :batch_details
end

resources :cosmics 
match '/cosmics/start_batch', :to => 'cosmics#start_batch', :as => 'start_batch'
<%= link_to 'Process', start_batch_path, :class =>"btn btn-primary" %>
“btn主btn”%>

我是否有一个看不见的错误,或者我的操作完全不正确?

您必须将
开始批处理
路径放在
参考资料:cosmics

match '/cosmics/start_batch', :to => 'cosmics#start_batch', :as => 'start_batch'**
resources :cosmics 
Rails使用与
routes.rb中请求的url匹配的第一条路由。行
resources:cosmics
生成到
cosmics控制器的路由
get/cosmics/:id
。此路由在自定义路由匹配“/cosmics/start\u batch”之前捕获
/cosmics/start\u batch
请求,这就是为什么它必须放在后面


您可以看到由
resources:cosmics
rake routes
生成的路由(路由按优先级排序)。在.

中还有一个例子,您必须将
开始批处理
路径放在
参考资料:cosmics

match '/cosmics/start_batch', :to => 'cosmics#start_batch', :as => 'start_batch'**
resources :cosmics 
Rails使用与
routes.rb中请求的url匹配的第一条路由。行
resources:cosmics
生成到
cosmics控制器的路由
get/cosmics/:id
。此路由在自定义路由匹配“/cosmics/start\u batch”之前捕获
/cosmics/start\u batch
请求,这就是为什么它必须放在后面


您可以看到由
resources:cosmics
rake routes
生成的路由(路由按优先级排序)。在.

中还有一个例子,问题是您的
匹配
路线位于
参考资料:cosmics
下方。这里的顺序很重要,因为当它在资源
cosmics
上的显示路线上匹配时,它会将
的“开始匹配”
解释为ID。如果你把这个移到
参考资料:漫画
上面,你会没事的

问题是您的
匹配路径位于
参考资料:cosmics
下方。这里的顺序很重要,因为当它在资源
cosmics
上的显示路线上匹配时,它会将
的“开始匹配”
解释为ID。如果你把这个移到
参考资料:漫画
上面,你会没事的

更改routes文件中的顺序是可行的,但为什么要转到show action?这是任何控制器的默认操作吗?它之所以会出现,是因为它将“start\u batch”解释为宇宙记录的ID。更改路由文件中的顺序是有效的,但为什么会出现显示操作?这是任何控制器的默认操作吗?它之所以会出现,是因为它将“start_batch”解释为宇宙记录的ID。