質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

427閲覧

RailsでPrimeライブラリを使用できなくて困っています

fillip09

総合スコア11

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/04/10 17:27

前提・実現したいこと

Railsアプリで素数かどうかを判定するアプリを作成したいのですが、
素数を判定するPrimeライブラリがRailsで使用できなくて困っています。

ターミナルでは実行出来たのですが、Railsのアクションに組み込もうとすると
どうしてもエラーが発生していまします。

発生している問題・エラーメッセージ

イメージ説明

numbers_controller.rb

class NumbersController < ApplicationController protect_from_forgery def index @num = params['input1'] if @num.to_i == 0 @msg = "数値ではありません" elsif Prime.prime(@num) == true @msg = "素数です" elsif Prime.prime(@num) == false @msg = "素数ではありません" else @msg = "数値をもう一度入力してください" end end

###rotes.rb

Rails.application.routes.draw do root to: "numbers#index" get 'numbers/index' get 'numbers', to: 'numbers#index' post 'numbers', to: 'numbers#index' post 'numbers/index' end

index.html.erb

<html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous"> <title></title> </head> <body> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js" integrity="sha384-smHYKdLADwkXOn1EmN1qk/HfnUcbVRZyYmZ4qpPea6sjB/pTJ0euyQp0Mk8ck+5T" crossorigin="anonymous"></script> </body> </html> <div class="form-group col-sm-5 mt-5"> <p><%= @msg %></p> <form method="POST" action="/numbers/index"> <input type = "text" class = "form-control" name = "input1" value="<%= @value %>"> <input type="submit" class="btn btn-primary", placeholder="判定する"> </form> </div>

試したこと

numbers_controller.rbにrequire 'prime'を書き込んでもPrimeが使えず、
if文のスコープ内に書き込んでもダメでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Primeというモデルを作ってしまっていませんか?

Ruby標準のPrimeとモデルのPrimeで名前が衝突して、どちらかしか使えないものと思われます。

投稿2020/04/10 23:00

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fillip09

2020/04/11 04:54

モデル名を変更して試してみます! Ruby標準のPrimeは使用するためにクラスを作成したりする必要はないと言うことでしょうか?
maisumakun

2020/04/11 05:50

> Ruby標準のPrimeは使用するためにクラスを作成したりする必要はないと言うことでしょうか? はい、「require 'prime'」とすれば使えます。
fillip09

2020/04/11 09:23

ありがとうございます!解決致しました! 理解を深めることが出来ました!
guest

0

Prime.primeというメソッドは存在しません。使いたいのはPrime.prime?ではありませんか?

参照: Prime.prime? (Ruby リファレンスマニュアル)

※ Rubyではメソッド名の最後に?がある場合、?も含めてメソッド名であり、?を省略することはできません。aa?は異なるものです。これは!でも同様で、aa!は異なるものです。

投稿2020/04/10 21:11

raccy

総合スコア21739

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問