ruby-on-rails - 从 form_for rails 调用动作?
问题描述
我想从 a 调用特定操作form_for
并传递参数。
我有一个 form_for 像这样传递日期:
<%= form_for(:start_end_dates, url: url_for(controller: 'company_dashboard', action: 'shopify_orders_sync'), method: :get) do |f| %>
<%= f.date_field :start_date, class: "form-control", required: true %>
<%= f.date_field :end_date, class: "form-control", required: true %>
<%= f.hidden_field :shop_id, value: @shop.id %>
<%= f.submit "Apply" %>
<% end %>
但是这种尝试似乎并没有调用该方法:
def shopify_orders_sync
@start_date = params[:start_date]
@end_date = params[:end_date]
@shop = Shop.find(params[:shop_id])
if (params[:start_end_dates] && params[:start_end_dates][:start_date] && params[:start_end_dates][:end_date])
start_date = params[:start_end_dates][:start_date].to_date.beginning_of_day
end_date = params[:start_end_dates][:end_date].to_date.end_of_day
if(start_date > end_date)
...
else
shop = Shop.find(params[:shop_id])
session = ShopifyAPI::Session.new(domain: shop.shopify_domain, token: shop.shopify_token, api_version: '2019-04')
ShopifyAPI::Base.activate_session(session)
...
...
...
...
...
...
end
end
end
路线:
get 'company/dashboard' => 'company_dashboard#dashboard'
get 'company/shopify-orders-sync' => 'company_dashboard#shopify_orders_sync'
此表单位于#dashboard 视图中。
如果我做类似的事情:
<%= form_for(:start_end_dates, url: company_orders_path, method: :get) do |f| %>
<%= f.date_field :start_date, class: "form-control", required: true %>
<%= f.date_field :end_date, class: "form-control", required: true %>
<%= f.submit "Apply", class: "btn btn-primary" %>
<% end %>
控制器:
def orders
...
if (params[:start_end_dates] && params[:start_end_dates][:start_date] && params[:start_end_dates][:end_date])
start_date = params[:start_end_dates][:start_date].to_date.beginning_of_day
end_date = params[:start_end_dates][:end_date].to_date.end_of_day
if(start_date > end_date)
redirect_to vendor_dashboard_path
flash.keep[:notice] = "Dates are in wrong order."
else
...
end
...
else
...
end
...
end
路线:
get 'vendor/orders' => 'vendor_dashboard#orders'
这工作,至少从供应商/订单路线。其他地方没试过。表单位于#orders 中并调用#orders 操作。
我可以对表单做些什么来保持一切正常,然后调用操作/方法def shopify_orders_sync
?
**
尝试:
**
<%= form_for :start_end_dates, url: '/company/shopify_orders_sync', method: 'get' do |f| %>
结果:
at=info method=GET path="/company/shop-orders?shop_id=31"
at=info method=GET path="/favicon.ico"
Started GET "/company/shop-orders?utf8=%E2%9C%93&start_end_dates%5Bstart_date%5D=2019-10-01&start_end_dates%5Bend_date%5D=2019-10-08&start_end_dates%5Bshop_id%5D=31&commit=Apply" for 69.118.200.110 at 2019-10-08 08:59:04 +0000
Processing by CompanyDashboardController#shop_orders as HTML
Parameters: {"utf8"=>"✓", "start_end_dates"=>{"start_date"=>"2019-10-01", "end_date"=>"2019-10-08", "shop_id"=>"31"}, "commit"=>"Apply"}
Rendering company_dashboard/shop_orders.html.erb within layouts/application
Rendered company_dashboard/shop_orders.html.erb within layouts/application (139.8ms)
Rendered layouts/_argon-navbar.html.erb (1.0ms)
Rendered layouts/_footer.html.erb (0.4ms)
Completed 200 OK in 161ms
at=info method=GET path="/company/shop-orders?utf8=%E2%9C%93&start_end_dates%5Bstart_date%5D=2019-10-01&start_end_dates%5Bend_date%5D=2019-10-08&start_end_dates%5Bshop_id%5D=31&commit=Apply"
at=info method=GET path="/favicon.ico"
我已经对上述 form_for 进行了多次迭代,但结果都相同。
解决方案
推荐阅读
- javascript - Safari 和苹果设备上的 Axios 请愿问题
- sql - 如何计算不同条件和相同外键ID的出现次数?
- python - 如何在 matplotlib 图中移动每个标记标签?
- javascript - 如何将多个 Vue Js 组件集成到遗留系统中?
- python - Numpy - 用更快的东西替换 hstack/vstack if-loop(追加?)
- linux - Linux spidev 驱动程序使自定义 spi 驱动程序不被调用
- javascript - 在对象中合并具有相同键的数组属性
- mongodb - 如何从MongoDB中的不同集合文档中查询所有参考ID
- reactjs - react-minimal-pie-chart 尝试创建自定义 svg 标签时,所有标签都呈现在同一位置
- flutter - 无法在 pubspec.yaml 中添加本地包