現在、railsアプリケーションの作成中なのですが、進捗が滞っているので…
目的としては、
・new.html.erb でフォームに必要な値を入力してユーザ新規作成
・コントローラでDBにinsert
・insert後、show.html.erb で新規に作成したユーザの情報を表示
したいのですが、show.html.erbでの検索結果の表示がうまくいきません。
insert は問題なくできているので、whereとかfindの中の構文がおかしいのだと思うのですが…
環境
windows8.1
rails4
sqlite3
new.html.erb↓
lang
1 2<%= form_for User.new, :url => {:action => 'create'} do |u| %> 3 <%= u.label :name, :class => "name" %><br> 4 <%= u.text_field :name, :class => "text" %> 5 <br> 6 <%= u.label :username %><br> 7 <%= u.text_field :uname, :maxlength => 20, :class => "text" %> 8 <br> 9 <%= u.label :location %><br> 10 <%= u.text_field :loc, :class => "text" %> 11 <br> 12 <%= u.label :bio %><br> 13 <%= u.text_area :bio, :maxlength => 60 %><br> 14 <br> 15 <%= u.submit :class => "btn btn-primary" %> 16<% end %>
コントローラ↓
lang
1def create 2 @user = User.create( 3:name => params[:user][:name], 4:uname => params[:user][:uname], 5:loc => params[:user][:loc], 6:bio => params[:user][:bio]) 7 redirect_to :controller => 'users', :action => 'show', :uname => @user.uname 8 @user.save
show.html.erb↓
lang
1<%= User.where(params[:uname]) do |u| %> 2<h1><%= u.name %></h1> 3<p><%= u.uname %></p> 4<ul> 5 <li>Location : <%= u.loc %></li> 6 <li>About : <%= u.bio %></li> 7</ul> 8<% end %>
のように、ユーザネームでの検索を行いたいです。(一意キーなので)
whereメソッドやfindメソッドの条件を書き換えて色々試しているのですが、吐くエラーも様々なので、どうしたらいいものか…
検索は、コントローラ側で行うべきなのでしょうか?
また、何度やってもDBの先頭レコードしか取得できないのには何か理由があるのでしょうか?
うまく検索する方法を教えていただけるとありがたいです。。。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/01/27 00:04