Можно ли проверить целое число при использовании встроенного эликсира на переднем конце? - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь выяснить, что я могу использовать на передней панели встроенного эликсира, чтобы проверить, является ли что-то числом.

Это мой код

<%= form_for @changeset, @action, fn f -> %>
  <%= if @changeset.action do %>
    <div class="alert alert-danger">
      <p>Oops, something went wrong! Please check the errors below.</p>
    </div>
  <% end %>
<!--- CAN I CHECK if @action is integer here? -->
  <%=if Integer.parse(@action) %>

  <div class="form-item">
    <%= label f, :shipping_address, class: "is-req" %>
    <%= text_input f, :sender_address %>
    <%= error_tag f, :label %>
  </div>

  <div class="form-item">
    <%= label f, :Receiver_Group_Name, class: "is-req" %>
    <%= text_input f, :reciever_group_name %>
    <%= error_tag f, :reciever_group_name %>
  </div>

  <div class="form-item">
    <%= label f, :Shipping_Items, class: "is-req" %>
    <%= text_input f, :items %>
    <%= error_tag f, :items %>
  </div>

  <div class="form-item">
    <%= label f, :Funding, class: "is-req" %>
    <%= text_input f, :funding %>
    <%= error_tag f, :funding %>
  </div>

  <div class="form-item is-text-center">
    <%= submit "Submit", class: "button is-big" %>
  </div>
<% end %>

Итак, я уже знаю, что Integer.parse () не работает на внешнем интерфейсе, но есть ли что-нибудь подобное, что я мог бы использовать для проверки переменной? Есть ли способ, которым я могу связать @action с javascript, если нет?

Первый проект с эликсиром / Фениксом, любые советы приветствуются.

1 Ответ

1 голос
/ 28 апреля 2019

Я уже знаю, Integer.parse() не работает на переднем конце ”

Я сомневаюсь, что следую тому, что должно означать. Шаблон обрабатывается на внутренней стороне. Integer.parse/2 всегда возвращает истинные значения, что делает if Integer.parse(whatever) в основном NoOp.

Что вы, вероятно, хотите, это настроить еще один назначить в вашем контроллере:

it_is_integer =
  case Integer.parse(action) do
    {_int, ""} -> true
    {_int, _} -> false
    :error -> false
  end

и передайте это присвоение Phoenix.Controller.render/3 или где угодно (it_is_integer: it_is_integer) и используйте в своем шаблоне:

<%= if @it_is_integer %>

Sidenote: Я не знаком с Фениксом, но AFAICT @action равен , и никогда не должен быть целым числом .

...