Цель состоит в том, чтобы захватить входной сигнал из формы, а затем после того, как контроллер и служба будут выполнены, покажет результат на другом представлении. Основная проблема - взаимодействие между контроллером и видом формы. Представление должно передать захваченный вход в качестве параметра в контроллер и продолжить его веселый путь. Как правильно зафиксировать параметр и передать его на контроллер?Передача параметра с точки зрения контроллера. Затем вернитесь к виду
# controller
class CheckNumberController < ApplicationController
require_relative '../services/number_check_modulo'
def get_cert_number(cert)
@cert_id = cert
end
def show_check_number
checking_policy_number = Get_policy_check_digit.new(@cert_id) # Creates a new instance of the "Get_policy_check_digit" class
# From number_check.rb
@check_number = checking_policy_number.create_check_digit # Runs the "create_check_digit" method from the "Get_policy_check_digit" class
end
end
# service 'app/services/number_check_modulo' required in the controller shown above
class Get_policy_check_digit
def initialize(cert_id)
#instance variable
@cert = cert_id
end
def create_check_digit
cert_id_6 = @cert.to_s
cert_id_6.slice!(0)
cert_id_6.to_i
cert_id_6 % 7
end
end
Я использую форму helper form_tag на мой взгляд. После того, как пользователь отправит номер, страница будет перенаправлена на страницу отображения вывода.
# Form view
<H1>Enter Cert Number below</H1>
<%= form_tag('show_check_number', method: 'get') do %>
<%= text_field_tag(:cert) %>
<%= submit_tag("Submit") %>
<% end %>
Эта страница просто показывает результат вычислений, выполненных с помощью службы «приложение/услуги/number_check_modulo»
# View that shows the result
<h1>Your check number is <%= @check_number %></h1>
Я довольно новыми для этого, но я думаю, что я по праву трек.
Может быть, я что-то отсутствует, но я не вижу, что вы делаете что-то вроде 'Params [: cert] ', чтобы получить значение': cert'; это то, что вам не хватает? –
Имя и название названия классов довольно запутывают. В любом случае, это должно быть так: 'check_policy_number = Get_policy_check_digit.new (params [: cert])'. Метод 'get_cert_number (cert)' бесполезен здесь – MrYoshiji