Ruby on rails 如何在另一个MVC中使用表单数据?
我刚刚开始学习rails和ruby,但已经被卡住了 我已经创建了一个模型、一个视图文件和一个控制器,其表单允许用户输入一些数据。现在我正在开发另一个MVC,它使用这些数据进行各种计算并返回结果。我的问题是:我根本不明白如何将用户输入的数据输入到进行计算的模型中。我知道这是一个非常初级的问题,但看起来我无法独自解决它 条目模型:entry.rbRuby on rails 如何在另一个MVC中使用表单数据?,ruby-on-rails,Ruby On Rails,我刚刚开始学习rails和ruby,但已经被卡住了 我已经创建了一个模型、一个视图文件和一个控制器,其表单允许用户输入一些数据。现在我正在开发另一个MVC,它使用这些数据进行各种计算并返回结果。我的问题是:我根本不明白如何将用户输入的数据输入到进行计算的模型中。我知道这是一个非常初级的问题,但看起来我无法独自解决它 条目模型:entry.rb class Entry include ActiveModel::Model attr_accessor :icao, :string
class Entry
include ActiveModel::Model
attr_accessor :icao, :string
attr_accessor :elevation, :integer
attr_accessor :qnh, :integer
attr_accessor :temperatur, :integer
attr_accessor :winddirection, :integer
attr_accessor :windspeed, :integer
attr_accessor :basedistance, :integer
validates_presence_of :icao
validates_presence_of :elevation
validates_presence_of :qnh
validates_presence_of :temperatur
validates_presence_of :winddirection
validates_presence_of :windspeed
validates_presence_of :basedistance
end
条目视图:new.html.erb
<% content_for :title do %>Flytical<% end %>
<h3>Airfield Conditions</h3>
<div class="form">
<%= simple_form_for @entry do |form| %>
<%= form.error_notification %>
<%= form.input :icao, label: 'Airfield ICAO', input_html: { maxlength: 4 }, autofocus: true%>
<%= form.input :elevation, label: 'Airfield Elevation', input_html: { maxlength: 4 }%>
<%= form.input :qnh, label: 'QNH', input_html: { maxlength: 4 }%>
<%= form.input :temperatur, label: 'Temperatur', input_html: { maxlength: 3 }%>
<%= form.input :winddirection, label: 'Wind Direction', input_html: { maxlength: 3 }%>
<%= form.input :windspeed, label: 'Wind Speed', input_html: { maxlength: 3 }%>
<%= form.input :basedistance, label: 'Base Takeoff Distance at MSL', input_html: { maxlength: 4 }%>
<%= form.button :submit, 'Submit', class: 'submit' %>
<% end %>
</div>
<% content_for :title do %>Flytical<% end %>
<h3>Results</h3>
<p> Test result <%= @densalt %> </p>
老实说,我觉得我遗漏了一些基本但重要的要点——我希望我能通过这个项目来学习。为什么你需要另一个MVC来完成这个项目?你说的另一个MVC是什么意思?你可能会发现它是一个有用的教程。它演示了这种逻辑——构建模型、保存数据等等。谢谢大家!我想,如果我将表单输入与模型、视图和控制器文件中的计算分离,可能会安排得更清楚。你愿意推荐在同一个地方同时做这两件事吗?
class Calc
include ActiveModel::Model
def pressalt
if @entry.qnh < 1013
pressalt = @entry.elevation + (1013 - @entry.qnh) * 30
else
pressalt = @entry.elevation
end
end
def densalt
if @entry.temperatur > 15
densalt = pressalt + (((120 * ((@entry.temperatur - (15 - @entry.elevation * 2 /1000)))
else
densalt = pressalt
end
end
end
<% content_for :title do %>Flytical<% end %>
<h3>Results</h3>
<p> Test result <%= @densalt %> </p>
class CalcsController < ApplicationController
def create
@calc = Calc.new
end
end
Rails.application.routes.draw do
resources :entries, only: [:new, :create]
resources :calcs, only: [:new, :create]
root to: 'visitors#new'
end