2011-10-03 77 views
2

我是一名铁路新手,路线问题令我困惑。Rails路由按钮

在我的一页上,我有一个表格。在这种形式下,我允许用户填写一些需要的信息并按下“提交”按钮。

我得到:

No route matches {:action=>"inventory_test", :controller=>"test_types"} 

我有在test_type控制器 “inventory_test” 的动作。

我的疑惑是,路由似乎是根据REST模型定义的,例如/ Users/edit/1。这很好,但是如何为按钮之类的东西创建路线?

我可能很幼稚,但它好像如果我试图建立形式路线:

match 'some/url' => 'controller#action' 

那么我基本上定义整个页面的操作。如何定义页面元素的操作?

当点击这个按钮时,我想要控制器中的动作被调用。我在寻找:

match "submit_button" => 'test_types#inventory_test' 

我意识到我很可能误解范例,所以任何教育都非常感激。


代码: (请注意,我没有测试表单代码还没有,但希望你的想法)

index.html.haml 

%div 

    %table 
    %caption 
     Inventory Tests 
     %form 
     Inventory Run: %input {:type => 'text', :name=>'inventory_run'} 
     Inventory Class: %input {:type => 'text', :name=>'inventory_class'} 
     =button_to "Run Inventory Test", :action => 'inventory_test'; 
+0

你需要寻找到AJAX试过了,我想。 –

+0

你是什么意思,“定义整个页面的动作”?路线只是网址,它们可以通过表单,点击,链接,任何东西来定位。 –

+0

那么,我将如何使用按钮/表单定位路线? – wadesworld

回答

0

如果你提交一个范式那么这应该有助于

路线匹配'/ url'=>“test_types#inventory_test”应该可以正常工作。

<%= form_for(@user, :url => "/url") do |f| %> 
    "Put your form code here" 
    <%= f.submit "Submit" %> 
<% end %> 

如果有任何疑问还原。

编辑按代码发布

%form{ :action => "inventory_test", :method => "post"} 

    %label{:for => "inventory_run"} Inventory Run: 
    %input{:type => "text", :name => "inventory_run"} 

    %label{:for => "inventory_class"} Inventory Class: 
    %input{:type => "text", :name => "inventory_class"} 

%input{:type => "submit", :value => "Submit"} 

只是检查,它应该为你工作,但我没有用它