Ruby on rails 没有活动记录模型且显示先前存在的数据库数据的窗体
我有一个数据库,数据格式为(country,LEmale,LEfemale)LE=预期寿命,我想向提交此表单的用户显示此数据:Ruby on rails 没有活动记录模型且显示先前存在的数据库数据的窗体,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我有一个数据库,数据格式为(country,LEmale,LEfemale)LE=预期寿命,我想向提交此表单的用户显示此数据: <%= form_tag "pages#show" do %> <%= radio_button_tag(:sex, "male") %> <%= label_tag(:male, "I am male") %> <%= radio_button_tag(:sex, "female") %> <%=
<%= form_tag "pages#show" do %>
<%= radio_button_tag(:sex, "male") %>
<%= label_tag(:male, "I am male") %>
<%= radio_button_tag(:sex, "female") %>
<%= label_tag(:female, "I am female") %>
<br>
<%= label_tag(:country, "Country:") %>
<%= text_field_tag(:country) %>
<br>
<%= number_field_tag 'age', nil, in: 10...110 %>
<%= submit_tag("Submit", :id => 'submit') %>
<% end %>
“提交”)%%>
在同一页上,但我不确定如何实现这一点,因为我没有预先存在的活动记录模型可供参考。到目前为止,我已经编写了以下代码,但是表单不起作用,因为当我按下submit时什么也没有发生
class PagesController < ApplicationController
def index
end
def show
@sex = params[:sex]
@country = params[:country]
@age = params[:age].to_i
@left = Country.new.time_left(@country, @sex, @age)
redirect_to index
end
end
class PagesController
还有我的“包装模型”
class Country
实现这一目标的最佳方式是什么 您尚未在表单标签中为表单指定要提交到的有效url。鉴于您的代码看起来像一个restful控制器,我假设您的routes.rb文件中有一个
resources:pages
,因此您需要执行类似form_tag”/pages/1的操作,方法:“get”do
,以便匹配路由
我建议创建一个更合适的命名资源,并使用类似“集合”路由的索引,而不是类似“成员”路由的show。或者向其添加一个额外的收集路由,以响应POST请求
或者,您也可以创建单个资源
但是,一旦您将数据提交给控制器,您的原样代码就不会达到预期效果,因为在执行重定向后,您将丢失
@left
数据。如果计划显示数据,则需要在那里渲染视图。最简单的方法是使用new
和create
操作创建新资源。新操作保存您的表单并提交给create操作,该操作仅在create.html.erb
模板中显示结果,您不应该重定向到其他地方。您可以在中找到有关请求/响应周期的更多信息,您希望如何在没有模型的情况下提取数据库数据?我使用国家/地区模型作为包装器模型
class Country < ActiveRecord::Base
def time_left(country, sex, age)
data = Country.find(country)
sex == "male" ? expected = data.male.to_i : expected = data.female.to_i
left = expected - age
end
end