У меня есть вид обновления профиля с некоторыми вложенными функциями. Когда большинство пользователей приложений обновляют свой профиль, все работает. Однако, когда некоторые пользователи пытаются обновить свой профиль, похоже, что параметры не передаются. Может ли это быть вызвано кросс-браузерными проблемами? Здесь есть что-то простое, чего мне не хватает?
Пример работы обновления:
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. Я читал о людях, имеющих схожие проблемы, но до сих пор не могу найти решение или причину проблемы.