2015-11-03 64 views
0

我的Rails 1.9應用程序出現問題,我希望發送與充滿了我正在遍歷和顯示的模型的表相關的ID。如何使用Haml和Rails中的複選框發送表中記錄的ID

我的checkbox_tag設置正確,我試圖將整個表封裝在form_tag中,以便將ID發送回控制器,以便我可以在不同的視圖中編輯它們。這涉及到這個代碼的

我的路線節:

的routes.rb:

match '/workflow_queue/index', :to => 'WorkflowQueue#index', :as => 'workflow_queue' 
match '/workflow_queue/import_tendays', :to => 'WorkflowQueue#import', :as => 'workflow_queue_import' 
match '/workflow_queue/import_finish', :to => 'WorkflowQueue#import_finish', :as => 'workflow_queue_import_finish' 
match '/workflow_queue/delete', :to => 'WorkflowQueue#delete', :as => 'workflow_queue_delete' 
resources :workflowqueue do 
    member do 
    post 'edit_multiple'  
    end 
end 

的路由文件應該創造什麼在文檔中表示給出edit_multiple_workflowqueue_path的路徑,它似乎是這樣做的,因爲當我去顯示包含這段代碼的部分。

_form_workflows.html.haml

=form_tag edit_multiple_workflowqueue_path do 

    %thead 
    %tr 

     %th= 'Entity_Type' 
     %th= 'Entity_ID' 
     %th= 'Workflow ID' 
     %th= 'Message' 
     %th= '' 
     %th= '' 


    %tbody 
    - for wf in @workflowtasks 
     %tr 

     %td= wf.entity_type 
     %td= wf.entity_id 
     %td= wf.workflow_id 
     %td= wf.message 
     %td= check_box_tag "wf_ids[]", wf.id 
     %td= link_to "Destroy", workflow_queue_delete_path(wf) 
=submit_tag "Edit Checked" 

我不斷收到錯誤

No route matches {:action=>"edit_multiple", :controller=>"workflowqueue"} 

這沒有多大意義,我雖然因爲,我的控制器代碼中,它顯然有一個edit_multiple定義的動作和控制器內部的控制器的名稱是控制器處理的每一個其他動作都使用的完全相同的名稱,這意味着如果我執行rake routes,控制器的名稱顯示爲「新建」,「編輯」 ,並「刪除」我thods自動創建Rails。

我真的不明白爲什麼它找不到控制器內的方法。控制器代碼:

class WorkflowQueueController < ApplicationController 

    def index 
    @workflows = WorkflowQueue.all 

    @title = 'Workflow Queues' 

    end 

    def import 
    @title = 'Import Tenday Notices' 
    @form_errors = [] 
    end 

    def import_finish 
    @title = 'Imported Tendays' 
    if params[:xml] 
     @start_time = Time.now 

     @filename = params[:xml].original_filename 

     errors_and_imports = WorkflowQueue.read_tenday_xml(params[:xml].read) 
     @errors = errors_and_imports[:errors] 
     @extra_imports = errors_and_imports[:extra_imports] 

     @form_errors = [] 

     @workflowtasks = WorkflowQueue.all 
    else 
     @form_errors = [ 'Please select a file to upload.' ] 
     render 'import' 
    end 
    end 

    def edit_multiple 
    @workflows = WorkflowQueue.all 
    render 'index' 
    end 

    def delete 
    url_string = request.url 
    id = url_string.split('.')[3] 
    workflow_to_be_deleted = WorkflowQueue.find(id.to_i).destroy 

    @workflowtasks = WorkflowQueue.all 
    @title = 'Imported Tendays' 
    @form_errors = [] 
    @errors = [] 
    end 

end 

edit_multiple的代碼是一次性的代碼只是爲了看看,如果該方法被調用。

回答

0

爲 'edit_multiple' 路線的 'workflowqueue',你需要傳遞一個Workflowqueue ID的成員:

edit_multiple_workflowqueue_path(@workflowqueue)