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