お疲れ様です。ご教授ください。
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 %>
情報が足りなければご指摘ください。
回答1件
あなたの回答
tips
プレビュー