2011-10-03 70 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"} 

只是檢查,它應該爲你工作,但我沒有用它