Rails查看提交参数到我定义的控制器方法

时间:2015-05-06 16:42:40

标签: ruby-on-rails form-helpers

如何在视图中编写一个调用我定义的控制器方法的表单?另外,我想将参数传递给方法。我想做这样的事情,我已经定义了方法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添加什么内容?

2 个答案:

答案 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'