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
謝謝!
感謝您的快速反應。我試過這條路線,但我得到的錯誤:'沒有路由匹配{:動作=>「更新」:控制器=>「工資」}缺少必需的鍵:[: id]'我試過把東西傳遞到payroll_path,但是這看起來很愚蠢,因爲它是一個索引視圖? – mrh 2014-10-07 01:07:23
在你的表單中嘗試'payrolls_path'。如果這不起作用,請使用工資路線的'rake routes'輸出更新您的問題。 – infused 2014-10-07 01:10:12
我得到了路由錯誤,所以沒有運氣。見上面的問題編輯。 – mrh 2014-10-07 01:14:41