I am attempting to allow the user to press a button create a new entry into the database using a hidden_field. However, the one bit of information I do want passed to the database is not making it there.
form on the view
<%= form_for(current_user.rounds.build(:round_id => '201202')) do |f| %>
<div><%= f.hidden_field :round_id %></div>
<%= f.submit "Register", class: "btn btn-large" %>
<% end %>
controller
def create
@register = current_user.rounds.build(params[:round_id])
if @register.save
redirect_to root_path, :flash => { :success => "Registered" }
end
end
This code however creates a new entry in the database with a user_id but no round_id.
Can someone show me where my mistake is?
Thanks
edit: html code generated by my view code
<form id="new_round" class="new_round" method="post" action="/rounds" accept-charset"UTF-8">
<div>
<input id="round_round_id" type="hidden" value="201202" name"round[round_id]">
</div>
<input class"btn brn-large" type"submit" value="Register" name="commit">
</form>
round model
Class Round < ActiveRecord::Base
attr_accessible :user_id, :round_id, :score
belongs_to :user
end
The problem is that you are using
hidden_fieldfrom theform_forinstance. When you use it, the param passed to the controller gets a little different.Try using
hidden_field_tag "round_id", and you will get the result expected.