0

使用 Geocoder gem,我有一个可以显示当前位置的辅助方法。我想向用户展示属于他们本国的事件,仅此而已。我不知道如何将信息传递给控制器​​。

帮手

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)

您能否向我解释一下如何根据用户的语言环境查询事件。

4

2 回答 2

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
于 2013-06-28T17:17:18.843 回答
2

您的控制器有权访问请求,因此您可以:

@events = Event.where('start_at > ?', Time.zone.now).where(country: request.location.country).order('end_at ASC').limit(4)
于 2013-06-28T17:16:27.513 回答