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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Q&A

解決済

1回答

1936閲覧

rails4 パラメーターで受け取った値を変数に代入しテーブルで検索したい。

oshiaki

総合スコア17

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

1グッド

0クリップ

投稿2016/05/12 01:04

編集2016/05/12 01:54

お疲れ様です。ご教授ください。
ruby,railsともに初心者です。色々調べたのですが分からなくて。。。
とるに足らない質問かもしれませんがよろしくお願いします。

controllerで受け取った値を変数に代入しfind_byで検索したいのですがうまくいきません。
ArgumentError in Members#edits
First argument in form cannot contain nil or be empty
というエラーがでます。

controller現段階の全体図

class MembersController < ApplicationController def index end def news if params[:edits] redirect_to action: "edits" elsif params[:delete] redirect_to action: "destroy" else @member =Member.new @member.member_id = params[:q] end end def edits @umember_id = params[:q] @member = Member.find_by(member_id: @umember_id) end def create @member = Member.new(params[:member]) if @member.save redirect_to :action => "index", notice: "社員を登録しました。" end end def update @member = Member.find_by(member_id = params[member_id]) @member.assign_attributes(params[:member]) if @member.save redirect_to :action => "index", notice: "社員を登録しました。" end end def destroy end end

このdef editsの中の動きなんですが

def edits @umember_id = params[:q] @member = Member.find_by(member_id: 'sample') end

find_byの中身をべた書きすると検索できます。
params[:q]の値もdef newのほうでは動いているので渡っているとは思うのですが。。。

このエラーが解決できる方法を教えてください。
index.html.erb

p>社員番号を入力してください。</p> <%= form_tag :news_members, method: :get do %> <p><%= text_field_tag "q",params[:q]%> <%= submit_tag "新規作成"%> <%= submit_tag "変更", :name =>'edits'%> <%= submit_tag "削除", :name =>'destroy'%></p> <% end %>

edits.html.erb

% @page_title = "ユニティ・ソフト社員マスタメンテ" %> <h1><%= @page_title %></h1> <% @page_title2 = "変更画面"%> <h2><%= @page_title2 %></h2> <%= form_for @member, :url => {:action => 'update'} do |form| %> <table class="attr"> <tr> <th><%= form.label :member_id, "社員番号"%></th> <td><%= form.text_field :member_id %></td> </tr> ~中略~ </table> <p><%= form.submit %></p> <% end %>

情報が足りなければご指摘ください。

ikuwow👍を押しています

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

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

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

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

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

ikuwow

2016/05/12 01:19

どのようにうまくいかないのか追記していただけますか。エラーが出てそもそも動かないのか、取得結果が空なのか、など、起こっている現象によって対処が異なります。またControllerのコード全体を貼り付けてみてください。コードはMarkdown記法でシンタックスハイライトすると見やすくなりますよ。
oshiaki

2016/05/12 01:26

なるほどそうですね。了解しました。ご指摘ありがとうございます。
guest

回答1

0

ベストアンサー

... params[:q]の値もdef newのほうでは動いているので渡っているとは思う...

このことを、何らかの方法で、確認してみると良いとおもいます。
次のような方法があります。

1. log に出力する。

logger.debug "params[:q]= [#{params[:q]}]"

のように書けば表示されると思います。 (前後の空白文字に有無などもわかるように [] で囲んで表示するといった工夫をしておくとよいです。

2. デバッガーを使って、ブレークさせて、値を確認する。

"rails デバッグ" などで検索して、デバッグ方法を修得してみてください、

例: Railsでデバッグをする http://ruby-rails.hatenadiary.com/entry/20150108/1420721205

投稿2016/05/12 12:20

katoy

総合スコア22324

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

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

oshiaki

2016/05/13 00:03

ありがとうございます。 試してみると、def editにはいっていませんでした。 def editにparamsを渡す方法を探してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問