没有模型的Rails形式

时间:2012-05-03 23:23:24

标签: ruby-on-rails forms rails-routing

我正在创建一个超级简单的应用程序,它本质上只是一个控制器和一些视图。我无法弄清楚如何使表单提交,然后重定向到另一个操作。

这是我的代码:

# app/controllers/wizard_controller.rb

class WizardController < ApplicationController
  def calculate

    # process data from form here

    redirect_to controller: 'wizard', action: 'show'
  end

  def show
    # print processed data here
  end
end

这就是wizard#calculate视图的样子:

<div class="alert alert-info">
    <h2>Get advice on where to live in 3 easy steps!</h2>
</div>

<br/>

<%= form_tag(:controller => "wizard", :action => "calculate") do %>

 ... form fields ...

<%= submit_tag("Submit") %>

<% end %>

此时,由于/wizard/calculate行之前没有条件语句,因此只需立即转到/wizard/show重定向到redirect_to ...

编辑:使用Twitter上的回复解决 我基本上试图获取表单数据并在同一个操作中处理它。我通过将calculate拆分为setup来解决了这个问题,该视图具有表单,calculate处理数据并重定向到show

此外,<%= form_tag "/wizard/calculate", method: "get" do %>有助于准确提交表单数据。

感谢所有的回复,它帮助我们了解了它在rails中是如何工作的。

2 个答案:

答案 0 :(得分:1)

我不确定你的问题是什么。如果你有#process form data here,你必须处理好表格数据。

如果您没有型号,可以通过params访问已过帐的值。例如,如果表单上有一个名为address的字段,则可以使用params[:address]来访问控制器中的值。

答案 1 :(得分:1)

听起来你的路线没有设置。

在config / routes.rb

match '/wizard/calculate' => 'wizard#calculate'
match '/wizard/show' => 'wizard#show'

有更优雅的方式来设置路线,但这应该适用于您的超级简单应用。

否则,你的控制器和表格都没问题。