Простое обновление рельсов работает, только не для некоторых пользователей - PullRequest
0 голосов
/ 22 сентября 2011

У меня есть вид обновления профиля с некоторыми вложенными функциями. Когда большинство пользователей приложений обновляют свой профиль, все работает. Однако, когда некоторые пользователи пытаются обновить свой профиль, похоже, что параметры не передаются. Может ли это быть вызвано кросс-браузерными проблемами? Здесь есть что-то простое, чего мне не хватает?

Пример работы обновления:

Started POST "/profiles/Username"
Processing by ProfilesController#update as HTML
Parameters: {"commit"=>"Update", "profile"=>{"city"=>"Abc", "dob(1i)"=>"###",
  "dob(2i)"=>"##", "dob(3i)"=>"##", "lastname"=>"Abcd",
  "avatar"=>#<ActionDispatch::Http::UploadedFile:0xb61a7a50
  @original_filename="IMG_0160.JPG",
  @tempfile=#<File:/tmp/RackMultiparta20110921-25540-ohlp5o-0>,
  @headers="Content-Disposition: form-data; name=\"profile[avatar]\"; 
  filename=\"IMG_03160.JPG\"\r\nContent-Type: image/jpeg\r\n",
  @content_type="image/jpeg">, "gender_id"=>"2", "firstname"=>"Abc", "bio"=>"", 
  "state"=>"Abc"}, "authenticity_token"=>"####=", "utf8"=>"✓", "id"=>"Abc"}
Redirected to http://site.com/crop
Completed 302 Found in 2770ms 

Не работает:

Started POST "/profiles/Username"
Processing by ProfilesController#update as HTML
Parameters: {"authenticity_token"=>"###=", "utf8"=>"✓", "id"=>"Username"}
Completed in 413ms
NoMethodError (undefined method `[]' for nil:NilClass):
  app/controllers/profiles_controller.rb:112:in `update'

Может быть, пользователи пытаются загрузить поврежденный файл изображения?

Существуют ли какие-либо распространенные проблемы, с которыми сталкиваются люди, которые могут помешать передаче параметров, когда только некоторые пользователи отправляют данные в виде рельсов.

Обновление

Может ли это быть вызвано тем, как вызывается пользователь? Я мог бы определить @profile как @profile = current_user.profile

def update
  user = User.find_by_username(params[:id])
  @profile = user.profile

  if @profile.update_attributes(params[:profile])
    if params[:profile][:avatar].blank?
      redirect_to(@profile)
    else
      redirect_to crop_path
    end
  else
    format.html { render :action => "edit" }
    format.xml  { render :xml => @profile.errors, :status => :unprocessable_entity }
  end
end

обновление - вид редактирования профиля

<%= form_for(@profile, :html => {:multipart => true}) do |f| %>
  <table>
    <tr>
      <td class="profileformright"> 
        <%= f.label :firstname, "First Name" %>
      </td>
      <td class="profileformleft">
        <%= f.text_field :firstname, :class => "profilefield", :class=>"profilefield"  %>
      </td>
    </tr>
    <tr>
      <td class="profileformright">     
        <%= f.label :lastname, "Last Name" %>
      </td>
      <td class="profileformleft">        
        <%= f.text_field :lastname, :class => "profilefield"   %>
      </td>
    </tr>
    <td class="profileformright">     
      <%= f.label :avatar %>
    </td>
    <td class="profileformleft">      
      <%= f.file_field :avatar%>
    </td>     
    <tr>
      <td class="profileformright">
        <%= f.label :city %>
      </td>
      <td class="profileformleft">  
        <%= f.text_field :city, :class => "profilefield" %>
      </td>
    </tr>
    <tr>
      <td class="profileformright">       
        <%= f.label :state, "State"  %>
      </td>
      <td class="profileformleft">
        <%= f.select :state,  Carmen.state_names(),{}, :class=> "state" %>
      </tr>
      <tr>
        <td class="profileformright">
          <%= f.label :bio, "about" %>
        </td>
        <td class="profileformleft">
          <%= f.text_area :bio"   %>
        </td>
      </tr>
      <tr>
        <td class="profileformright">
          <%= f.label :dob, "Date of Birth" %>
        </td>
        <td class="profileformleft">
          <%= f.date_select :dob,
            { :start_year => Time.now.year,
              :end_year => 1900,
              :order => [:month, :day, :year] }%>
          </td>
        </tr>
        <tr>
          <td class="profileformright">
            Gender
          </td>         
          <td class="profileformleft">          
            <%= f.radio_button(:gender_id, 1) %> 
            <%= f.label :gender_id, 'Female'%>
            <%= f.radio_button :gender_id, 2 %>
            <%= f.label :gender_id, 'Male'%>
            <%= f.radio_button :gender_id, 3  %>
            <%= f.label :gender_id, 'Not saying'%>
          </td>
        </tr>
      </table>
      <div class="right">
        <%= f.submit "Update", :class => "invite_button" %>
      </div>
    <%end%>

Обновление

Итак, я решил, что это проблема IE. Кнопка отправки для представления редактирования прекрасно работает во всех браузерах и операционных системах, кроме IE в Windows. Я читал о людях, имеющих схожие проблемы, но до сих пор не могу найти решение или причину проблемы.

...