Rails 5以不保存数据的形式使用全局方法

时间:2019-09-17 17:22:14

标签: ruby-on-rails

因此,我建立了两种方法,一种将输入的日期转换为整数。然后将整数转换为日期(总是返回星期一)。

日期为整数:

def week_number(user_date)
  start_date = Time.parse('Jan 6 2019 12:01')
  start_year = start_date.year
  alpha = Date.parse(user_date.try(:strftime, ("%B %e, %Y")))
  if alpha.year < start_year
   errors 'cannot be before 2019'
  elsif alpha.year > start_year
   beta = alpha.year - start_year
   over_current_year = beta * 52
   above_c = alpha.cweek + over_current_year
   above_c
  else
   alpha.cweek
  end
end

整数到日期(返回星期一):

def week_date(user_number)
 start_date = Time.parse('Jan 6 2019 12:01')
 start_year = start_date.year
 if user_number < 1
  errors 'cannot be less than 1'
 elsif user_number > 52
  divided_number = user_number % 52
  year_return = start_year + divided_number
  date_return = Date.commercial(year_return, divided_number, 1)
  date_return.monday
 else
  user_return = Date.commercial(2019, user_number, 1)
  user_return
 end
end

因此,我希望这两种方法可以在应用程序中的任何位置使用。我该如何构建无需使用模型即可直接使用这两种方法的表单?

我尝试将它们扔进TravelController中,将路线更新为:

root to: 'travel#index'
resources :travel do
 post :week_number, on: :collection
 post :week_date, on: collection
end

然后该表单执行以下操作:

<%= form_with(url: week_number_travel_index_path, method: 'get', local: true) do %>
 <%= label_tag :user_date, 'Enter Date'%>
 <%= datetime_field_tag :user_date, nil, placeholder: Time.now.strftime("%b %e %Y %l:%M"), class: 'form-control' %>
 <%= button_tag 'Find Week Number', class: 'btn btn-success btn-block' %>
<% end %>

因此它应该从输入中获取值。我正在努力的是...正确的方法吗?然后如何显示该值?我以为我可以做<%= week_number(user_date)%>,但是我最终得到

  

未定义的局部变量或方法“ user_date”

0 个答案:

没有答案