在变量中定义参数

时间:2017-09-09 11:37:20

标签: ruby-on-rails ruby wufoo

我知道如何在变量中定义一个params以在另一个方法中使用它

在我的控制器中我有结果页面和联系页面,我希望将结果页面中的搜索参数存储在变量中并在我的联系页面方法中获取它们以不复制表单字段

我的结果页

def result
    if params[:room_type].present? && params[:location].present? && params[:nb_piece].present?
          @biens = Bien.near(params[:location], 1, units: :km).where(room_type: params[:room_type], nb_piece: params[:nb_piece])
    end
       @users = User.where(id: @biens.reorder(:user_id).pluck(:user_id), payer: true) || User.where(id: @biens.reorder(:user_id).pluck(:user_id), subscribed: true)
end 

我希望将这个参数存储在我的其他方法中,就像我只需要在我的表单中询问电子邮件和电话一样

def contact
    wufoo(params[:location], params[:room_type], params[:nb_piece], params[:email], params[:phone])
end 

我的wufoo

def wufoo(adresse, type, pieces, email, phone)
     require "net/http"
     require "uri"
     require "json"

     base_url = 'https://wako94.wufoo.com/api/v3/'
     username = 'N5WI-FJ6V-WWCG-STQJ'
     password = 'footastic'

     uri = URI.parse(base_url+"forms/m1gs60wo1q24qsh/entries.json")

     request = Net::HTTP::Post.new(uri.request_uri)
     request.basic_auth(username, password)

     request.set_form_data(
       'Field7' => adresse,
       'Field9' => type,
       'Field12' => email,
       'Field11' => phone,
       'Field8' => pieces
     )

      response = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => uri.scheme =='https'){
           |http|http.request(request)
      }

      puts JSON.pretty_generate(JSON[response.body])
end

1 个答案:

答案 0 :(得分:1)

这取决于用户从搜索到联系的方式。我假设联系表单与搜索相关联,并且他们希望就上次搜索中的信息与您联系。

这里的一个简单方法是将最后一次搜索存储在会话中,然后引用它。

def search
  store_params_in_session
  # .. your search logic here
end

def contact
  last_search = session[:last_search]
  if last_search.blank?
    # .. some error handling if no search is available
    return
  end

  wufoo(last_search[:location], #.. you get the idea
end

private

def store_params_in_session
  session[:last_search] = {
    location: params[:location],
    # .. more params here
  }