2

コントローラーの f.select タグから値を取得するにはどうすればよいですか。これが私のerbコードです

<td>
  <%= f.text_field :startdate , :id => "from", :placeholder => "Start Date"%>   
</td>    
<td>           
<%= f.select :repetitive_task, options_for_select(["Every Day","Every Week", "Every Month"]), {:prompt => 'None'}, {:id => "select1"} %>
</td>

そして、ここに私のコントローラがあります -

def create
  @micropost = current_user.microposts.build(params[:micropost])
  if params[:repetitive_task] == "Every Day" 
     @micropost.targetdate = params[:startdate]
  elsif params[:repetitive_task] == "Every Week" 
     @micropost.targetdate = params[:startdate] + 7
  elsif params[:repetitive_task] == "Every Month"
     @micropost.targetdate = params[:startdate] + 30 
  else
  end      
  if @micropost.save 
    flash[:success] = "Task created!"
    redirect_to root_url
  else             
   render 'static_pages/index'
end

送信ボタンをクリックしても値が取得されません。助けてください

4

2 に答える 2

3
<%= f.select :repetitive_task,options_for_select(["Every Day","Every Week", "Every Month"], params[:micropost][:repetitive_task])
, {:prompt => 'None'}, {:id => "select1"} %>

選択した値を表示するには、 options_for_selectの2 番目のパラメーターを渡します。

また、コントローラーで params[:repetitive_task] を使用する代わりに、params[:micropost][:repetitive_task] を使用します。

于 2013-01-28T10:42:48.420 に答える
2

form_forヘルパー(たとえばform_for:micropost)を使用している場合は、すべての値をparams [:micropost]に含める必要があります。あなたの場合、あなたは:repetitive_taskを持っているべきです

params[:micropost][:repetitive_task]
于 2013-01-28T10:44:41.877 に答える