2014-10-07 37 views
0

我已經得到的東西看似簡單,我需要一些幫助,目前在軌道4,5和Ruby 2.1.0軌道4 - 從視圖中傳遞參數使用的form_tag

我工作的工資指數工作到控制器頁面,用戶可以從頁面上的select_tag中選擇一個星期。我在我的工資單控制器@current_week變量,我想通過一個參數,但我有一些麻煩,這樣使用的form_tag。下面是我到目前爲止有:

index.html.haml

%h1 Payroll Index 
%h6= "Current Week: #{@current_week}" 
.week_selector 
=form_tag payroll_path, action: :update_week do 
    =select_tag :current_week, options_from_collection_for_select(@weeks, 'id', 'start_date') 
    =submit_tag 

payroll_controller.rb

class PayrollController < ApplicationController 
    def index 
    @weeks = Week.all 
    @current_week = params[:current_week] || Week.this_week.display_date 
    end 

    def update_week 
    @current_week = params[:current_week] 
    end 
end 

的routes.rb

Project::Application.routes.draw do 
    resources :payroll, only: [:index, :update] do 
    post '/:update_week' => 'payroll#index', as: :payroll 
    end 
... 

理想的情況下,我會喜歡的用戶能夠提交表單,只是更新控制器中的@current_week變量,仍停留在索引頁上。當然有一個簡單的方法可以做到這一點,我錯過了?

我試過在路線andform幾個不同的連擊,但都沒有取得很大進展。任何幫助,將不勝感激。謝謝!

UPDATE:

按注入的建議下,我改變了形式爲以下:

=form_tag payrolls_path, method: :get do 
    =select_tag :current_week, options_from_collection_for_select(@weeks, 'id', 'start_date') 
    =submit_tag 

而且收到以下錯誤:

undefined local variable or method `payrolls_path' for #<#<Class:0x00000101e045a0>:0x0000010c3af450> 

的要求,這裏是有關的rake routes輸出:

Prefix Verb URI Pattern         Controller#Action 
    payroll_payroll POST /payroll/:payroll_id/:update_week(.:format) payroll#index 
    payroll_index GET /payroll(.:format)       payroll#index 
      payroll PATCH /payroll/:id(.:format)      payroll#update 
        PUT /payroll/:id(.:format)      payroll#update 
     employees GET /employees(.:format)      employees#index 

謝謝!

回答

0

如果你想在current_week PARAM發送到設置方法,讓您的索引路徑:

= form_tag payroll_index_path, method: :get do 

默認的form_tag將使用POST,不會路線索引。

+0

感謝您的快速反應。我試過這條路線,但我得到的錯誤:'沒有路由匹配{:動作=>「更新」:控制器=>「工資」}缺少必需的鍵:[: id]'我試過把東西傳遞到payroll_path,但是這看起來很愚蠢,因爲它是一個索引視圖? – mrh 2014-10-07 01:07:23

+0

在你的表單中嘗試'payrolls_path'。如果這不起作用,請使用工資路線的'rake routes'輸出更新您的問題。 – infused 2014-10-07 01:10:12

+0

我得到了路由錯誤,所以沒有運氣。見上面的問題編輯。 – mrh 2014-10-07 01:14:41