如何在视图中编写一个调用我定义的控制器方法的表单?另外,我想将参数传递给方法。我想做这样的事情,我已经定义了方法predict
,它采用参数days
。
<%=form_for @currency, url: url_for(:controller => :currencies, :action => :predict) do |f| %>
<%= f.label :days %><br />
<%= f.text_field :days %>
<%= f.submit "Predict", class: "btn btn-primary" %>
<%end%>
另外,我需要在routes.rb
添加什么内容?
答案 0 :(得分:0)
&#39; rails way&#39;会说不是创建自定义操作,而是创建一个新的Predictions
控制器,并根据您的需要使用标准:new
或:create
操作。
话虽如此,你可以使用
<%=form_for @currency, url: {action: "predict"} do |f| %>
<%= f.label :days %><br />
<%= f.text_field :days %>
<%= f.submit "Predict", class: "btn btn-primary" %>
您可以通过搜索&#34;操作:&#34;在这些文档中找到它。 http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for
然后您可以访问params[:days]
或者您设置了强大的参数。希望这有帮助!
答案 1 :(得分:0)
我生成了一个只有一列(天)的脚手架货币:
rails generate scaffold Currency days:string
在我的货币控制器中,您有两个操作(表单和根路径的主页并预测):
class CurrenciesController < ApplicationController
def home
@currency = Currency.new
end
def predict
puts params[:currency][:days]
redirect_to root_path
end
end
表单的主视图如下所示:
<%= form_for @currency, :url => url_for(:controller => 'currencies', :action => 'predict') do |f| %>
<%= f.label :days %><br />
<%= f.text_field :days %>
<%= f.submit "Predict", class: "btn btn-primary" %>
<% end %>
通过此结果,您可以在控制台中看到使用puts
日志打印的日期字段。
我的routes.rb看起来像这样:
get 'currencies/home'
post 'currencies/predict'
root 'currencies#home'