2013-11-23 126 views
0

如何在助手內部訪問視圖的請求參數?Rails - 如何從助手的視圖訪問請求參數

我的觀點events/index7套date_selected參數:

<div><%= link_to 'View' , events_index7_path(:date_selected => date), :class => 'btn btn-mini'%></div> 

我的助手是app/helpers/calendar_helper.rb

這裏是在輔助我,我想訪問它的點它的照片。

enter image description here

我嘗試這樣做:

classes << "dayselect" if day == DateTime.strptime(params[:date_selected], "%Y-%m-%d") 

我得到這個錯誤:

undefined local variable or method `params' for #<CalendarHelper::Calendar:0x007f8d215671f0> 

,或者我應該被路過的日期助手以不同的方式?

感謝您的幫助!

回答

4

params是一個控制器方法,屬於ActionController:Metalhttp://api.rubyonrails.org/classes/ActionController/Metal.html#method-i-params

這有可能讓查看通過暴露這個控制器方法作爲輔助觸摸params

class FooController < ApplicationController 
    helper_method :params 

然後,在你看來,你可以調用這個幫助有params作爲參數。 my_helper(params)

但是,等等,這打破了MVC原則。視圖根本不應該觸及params。所有這些工作都應該在控制器層面完成。如果參數不正確會怎麼樣?您需要控制器來回應,而不是將該責任傳遞給查看。

所以,如果你需要觸摸它的視野,這是一種氣味。回顧整個過程,必須有更好的安排。

+0

我可以通過其他方式而不是參數傳遞數據嗎? – Reddirt

+0

我不知道你的邏輯,所以答案中的解決方案仍然像黑客。如果我這樣做,我不會讓視線碰觸不是他的業務的參數。相反,我會準備控制器或模型中的所有東西。 –