我的Rails 1.9应用程序存在问题,我希望发送与我正在迭代并显示的模型表相关的ID。
我正确设置了checkbox_tag
,并尝试将整个表格封装在form_tag
中,以便将ID发送回控制器,以便我可以在不同的视图中对其进行编辑。 / p>
与此相关的代码的路线部分是:
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
,控制器的名称将显示为" new"," edit"和&#34 ;删除"方法自动创建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 :(得分:0)
As&#39; edit_multiple&#39; route是&#39; workflowqueue&#39;的成员,您需要传递Workflowqueue id:
edit_multiple_workflowqueue_path(@workflowqueue)