2013-06-28 46 views
0

使用Geocoder gem,我有一個輔助方法可以顯示當前位置。我想向用戶展示屬於他們本國的事件,而不是其他事情。我無法弄清楚如何將信息傳遞給控制器​​。將哈希傳遞給Ruby on Rails中的控制器

助手

def myplace 
    @myplace = request.location.country 
end 

打印/顯示

<%= myplace %> 

我試圖通過MyPlace酒店控制器

控制器

@events = Event.where('start_at > ?', Time.zone.now).where(country: params[:myplace]).order('end_at ASC').limit(4) 

能否請你向我解釋如何我可以查詢基於用戶的語言環境事件。

回答

2

控制器訪問請求,所以,你可以:

@events = Event.where('start_at > ?', Time.zone.now).where(country: request.location.country).order('end_at ASC').limit(4) 
+0

我不知道爲什麼我要去很遠的路..感謝隊友 – Benjamin

3

如果你想有一個方法是提供給您的視圖和控制器都,它不會在您的幫助文件中去。你需要把它放在你的控制器,並使其可作爲輔助你的意見與helper_method

class MyController 

    helper_method :myplace 


    def my_action 
    @events = Event.where('start_at > ?', Time.zone.now) 
     .where(country: myplace) 
     .order('end_at ASC').limit(4) 
    end 

    protected 

    def myplace 
    @myplace = request.location.country 
    end 
end 
+0

感謝這個,我真正感激 – Benjamin

相關問題