我的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
的代碼是一次性的代碼只是爲了看看,如果該方法被調用。