簡體   English   中英

Rails上的date_select問題

[英]Problem with date_select on rails

我有以下控制器:

  def personalization
    @title = t "generic.forms.personalization"
  end

  def update_personalization
    begin
      @user.user_data.birthdate = Date.civil(params[:user_data][:"birthdate(1i)"].to_i,params[:user_data][:"birthdate(2i)"].to_i,params[:user_data][:"birthdate(3i)"].to_i)
    rescue
      wrong_data = 1
    end
    if @user.user_data.update_attributes(params[:user_data])
      if wrong_data
        flash[:Error] = t "generic.messages.error.wrong_data"
        redirect_to :back and return
      end
      flash[:Success] = t "generic.messages.success.account_updated"
      redirect_to :back
    else
      flash[:Error] = @user.user_data.errors.full_messages.join(".<br>")
      redirect_to :back
    end
  end

和以下視圖:

<div id="ProfileEditForm" class="ContentBorders">

  <h1 class="FormsHeading"><%= t @title %></h1>
  <div class="FormsSpacing">

  <%= form_for(@user.user_data, :html => { :id => "UpdateUserForm", :class => "EditForms"}, :url => {:action => 'update_personalization'}) do |f| %>
  <% flash.each do |key, value| %>
    <div class="FormsMargins <%= key %>"><%=raw value + "." %></div>
  <% end %>

      <div class="Field"><div class="LabelInline"><%= t "generic.site.first_name" %>:</div>
      <%= f.text_field :first_name, :id => "EditFirstName", :class => "Rounded5", :maxlength => "30" %></div>

      <div class="Field"><div class="LabelInline"><%= t "generic.site.last_name" %>:</div>
      <%= f.text_field :last_name, :id => "EditLastName", :class => "Rounded5", :maxlength => "30" %></div>

      <div class="Field DateSelection"><div class="LabelInline"><%= t "generic.site.birthdate" %>:</div>
        <%= date_select("user_data", "birthdate", :start_year => 1901, :end_year => 2011, :include_blank => true) %>
      </div>

      <div class="Field GenderSelection"><div class="LabelInline"><%= t "generic.site.gender" %>:</div>
        <%= f.radio_button :gender, "0", :id => "EditGenderMale" %> <span><%= t "generic.site.male" %></span>
        <%= f.radio_button :gender, "1", :id => "EditGenderFemale" %> <span><%= t "generic.site.female" %></span>
      </div>

      <div class="Field EducationSelection"><div class="LabelInline"><%= t "generic.site.educational_level" %>:</div>
        <%= f.select :education_level, options_for_select({
          " " => 0, (t "generic.site.education_levels.first") => 1, (t "generic.site.education_levels.second") => 2,
          (t "generic.site.education_levels.third") => 3, (t "generic.site.education_levels.fourth") => 4,
          (t "generic.site.education_levels.fifth") => 5, (t "generic.site.education_levels.sixth") => 6,
          (t "generic.site.education_levels.seventh") => 7 }, @user.user_data.education_level) %>
      </div>

      <div class="Action"><%= f.submit (t "generic.forms.update_data"), :id => "EditSubmit", :class => "ProfileEditAction Shadow1 Rounded5 AcceptButtonsBorder" %></div>

  <% end %>

  </div>

</div>
<%= render :partial => 'profile_panel' %>

現在。 問題出在date_select方法上。 除了從data_select生成的表單字段外,每個表單字段均正常工作(數據庫中的數據填滿了它們)。

如果我選擇一些適當的數據,然后單擊“更新”按鈕,則它將適當的數據保存到數據庫中。 問題來自產生的那一刻,並且沒有任何值(加載時始終為空)。

任何想法,如何解決?

也許...

你有:

<%= date_select("user_data", "birthdate", :start_year => 1901, :end_year => 2011, :include_blank => true) %>

你需要:

<%= f.date_select("user_data", "birthdate", :start_year => 1901, :end_year => 2011, :include_blank => true) %>

只需把“ f”

<%= f.date_select ... 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM