Rubyを始めたてであやふやな部分が沢山あり
質問内容もぐちゃぐちゃで申し訳ないです。
Rubyとsinatraで簡易掲示板を作っているのですが、投稿フォームの名前用テキストフィールドの中身が空欄であるときに名前を「名無し」と置き換えたいです。
しかしコードを書いてみたのですが、エラーが出てうまく実装できません。
どこか間違っているのでしょうか、
ruby
1post "/new" do 2 if params[user_name] != "" 3 Comment.create({:user_name => params[:user_name], :body => params[:body]}) 4 else 5 Comment.create({:user_name => "名無し", :body => params[:body]}) 6 end 7 redirect "/" 8 erb :index 9end
の部分を
名無しに置き換える処理はしないコード
ruby
1post "/new" do 2 Comment.create({:user_name => params[:user_name], :body => params[:body]}) 3 redirect "/" 4 erb :index 5end
に変えると正常に動作します。
なにか知識が抜けているかもしれません。
どなたかお手を貸してください、お願いします。
コード
main.rb
Ruby
1require "sinatra" 2require "sinatra/reloader" 3require 'active_record' 4 5ActiveRecord::Base.establish_connection( 6 "adapter" => "sqlite3", 7 "database" => "./bbs.db" 8) 9 10class Comment < ActiveRecord::Base 11end 12 13get "/" do 14 @comments = Comment.order("id desc").all 15 erb :index 16end 17 18post "/new" do 19 if params[user_name] != "" 20 Comment.create({:user_name => params[:user_name], :body => params[:body]}) 21 else 22 Comment.create({:user_name => "名無し", :body => params[:body]}) 23 end 24 redirect "/" 25 erb :index 26end 27 28get "/delete/:id" do 29 @comments = Comment.find(params[:id]) 30 erb :delete 31end 32 33post "/delete/:id" do 34 if params.has_key?("ok") 35 comment = Comment.find(params[:id]) 36 comment.destroy 37 redirect "/" 38 else 39 redirect "/" 40 end 41end
index.erb ... メインページ 投稿内容を表示、または新規投稿
ruby
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <mata charset="utf-8"> 5 <title>掲示板</title> 6</head> 7<body> 8 <h1>掲示板</h1> 9 <ul> 10 <% @comments.each do |comment| %> 11 <li data-id= "<%= comment.id %>"> 12 <%= comment.user_name %>: 13 <%= comment.body %> 14 <a href="/delete/<%= comment.id %>" class="btn btn-danger">削除</a> 15 </li> 16 <% end %> 17 </ul> 18 <h2>投稿フォーム</h2> 19 <form method="post" action="/new"> 20 名前 <input type= "text" name="user_name"> 21 内容 <input type= "text" name="body"><input type= "submit" value="投稿"> 22 </form> 23</body> 24</html>
delete.erb ... 投稿したコメントを削除
ruby
1<p>本当にこの投稿を削除しますか?</p> 2<blockquote><p><%= @comments.body %></p></blockquote> 3<form action="/delete/<%= @comments.id %>" method="POST"> 4 <button type="submit" class="btn btn-primary" name="ok">OK</button> 5 <button type="submit" class="btn" name="cancel">キャンセル</button> 6</form>
開発環境
・MacOS 10.14.6
・VSCode 1.37.1
・Ruby 2.5.0
回答1件
あなたの回答
tips
プレビュー