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

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

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

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

Q&A

解決済

1回答

1462閲覧

Ruby on Rails sqlite3でデータ登録できない時がある

earnest_gay

総合スコア615

Ruby on Rails

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

0グッド

0クリップ

投稿2017/02/12 16:01

タイトルの通りです。
modelは処理自体は何もないのでソースは載せません。

ruby

1#people_controller.rb 2 3class PeopleController < ApplicationController 4 5 def index 6 @msg = "社員一覧" 7 @data = Person.all 8 end 9 10 def show 11 @msg = "社員詳細" 12 @data = Person.find(params[:id]) 13 end 14 15 def add 16 @msg = "社員登録" 17 end 18 19 protect_from_forgery 20 21 def create 22 if request.post? then 23 obj = Person.create( 24 name: params['name'], 25 age: params['age'], 26 mail: params['mail'] 27 ) 28 end 29 redirect_to '/people' 30 end 31 32end

ruby

1#views->index.html.erb 2 3<h1>People#index</h1> 4<p><%= @msg %></p> 5<pre> 6 <table> 7 <tr> 8 <th>Id</th> 9 <th>Name</th> 10 </tr> 11 <% @data.each do |obj| %> 12 <tr> 13 <td><%= obj.id %></td> 14 <td><a href="/people/<%= obj.id %>"><%= obj.name %></a></td> 15 </tr> 16 <% end %> 17 </table> 18</pre>

ruby

1#views->show.html.erb 2 3<h1>People#index</h1> 4<p><%= @msg %></p> 5<pre> 6 <table> 7 <tr> 8 <th>Id</th> 9 <td><%= @data.id %></td> 10 </tr> 11 <tr> 12 <th>Name</th> 13 <td><%= @data.name %></td> 14 </tr> 15 <tr> 16 <th>Age</th> 17 <td><%= @data.age %></td> 18 </tr> 19 <tr> 20 <th>Mail</th> 21 <td><%= @data.mail %></td> 22 23 </tr> 24 </table> 25</pre> 26<a href="/people">社員一覧へ戻る</a>

ruby

1#views->add.html.erb 2 3<h1>People#index</h1> 4<p><%= @msg %></p> 5<table> 6 <form method="post" action="/people/add"> 7 <tr> 8 <th>Name</th> 9 <td><input type="text" name="name"></td> 10 </tr> 11 <tr> 12 <th>Age</th> 13 <td><input type="text" name="age"></td> 14 </tr> 15 <tr> 16 <th>Mail</th> 17 <td><input type="text" name="mail"></td> 18 19 </tr> 20 <tr> 21 <th></th> 22 <td><input type="submit"></td> 23 </tr> 24 </form> 25</table>

これでDB登録はできます。

イメージ説明

イメージ説明

http://0.0.0.0:3000/people/addは手打ちでやっていて面倒だと思い、下記を追加しました。

ruby

1#views->index.html.erb 2 3<h1>People#index</h1> 4<p><%= @msg %></p> 5<pre> 6 <table> 7 <tr> 8 <th>Id</th> 9 <th>Name</th> 10 </tr> 11 <% @data.each do |obj| %> 12 <tr> 13 <td><%= obj.id %></td> 14 <td><a href="/people/<%= obj.id %>"><%= obj.name %></a></td> 15 </tr> 16 <% end %> 17 </table> 18</pre> 19 20#下記を付け足した。 21<a href="/people/add">社員登録</a>

リンクして登録しようとするとindexへ遷移するわけでもなく登録ができません。
エラーが出ているわけでもなさそうです。

add画面でcommand+Rでブラウザの再読み込みをすると何故か登録できます。
どうすれば再読み込みせずに普通に登録できるように成るのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

なんといったらいいか はぁ
web系の知識というかhtmlの知識というかそもそもhttpに関する最低限の基礎知識を持って欲しいとは思います。

でも、ruby on railsはそんなものはすっ飛ばして、何も理解していなくても、webアプリが作れることがメリットです。
しかもそのアプリがまあまあセキュリティが高い
なので、レール(rails)に乗ってみましょう(チュートリアル通りにやりましょう)、
まずはscaffoldを使いましょうこれはruby on railsの基本的な機能で、webアプリの足場を作ってくれます。
参考サイト

ruby

1rails g scaffold name:string age:int mail:string 2rake db::migrate

この2行だけで、def add に相当する def newを含めたセットを全て作ってくれます。
最後にセキュリティのため、strongparamater(ユーザーが編集していいcolumn)を設定すれば
一覧、登録、編集、削除に関する一通りの手続きが完成し使えるようになります。
他にしたいことがあればそれから考えましょう。

投稿2017/02/13 05:02

moke

総合スコア2241

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問