Невозможно редактировать атрибуты, используя AJAX на Rails 3 - PullRequest
0 голосов
/ 05 февраля 2012

У меня есть представление под названием hot.html.erb, в котором перечислены элементы, называемые «проблемами».Я хочу, чтобы пользователь мог просто изменить значение параметра и мгновенно отправить изменение с помощью AJAX для обновления базы данных для таких вещей, как «статус».

То, что происходит, - то, что, когда опция выбрана, база данных обновляется, но я перенаправлен в представление show.html.erb.Я хотел бы остаться в представлении hot.html.erb.У меня такое чувство, что я не понимаю запись format.js и что нужно сделать.Любая помощь будет оценена.

Я использую jquery, query_ujs, rails.js.

Я реализовал следующий update.html.erb в моем IssuesController:

def update
    @issue = Issue.find(params[:id])

    respond_to do |format|
      if @issue.update_attributes(params[:issue])
        format.html { redirect_to(@issue, :notice => 'Issue was successfully updated.') }
        format.xml  { head :ok }
        format.js   { render :nothing => true }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @issue.errors, :status => :unprocessable_entity }
      end
    end
  end

Вот моя страница индекса (hot.html.erb) с формой для полей выбора, где я хочу, чтобы пользователь мог изменять «статус» и «приоритет»:

<% @issues.each do |issue| %>
  <tr>
    <td><%= issue.description %></td>
    <td><%= issue.notes %></td>
    <%= form_for(issue, :remote => true) do |f| %>
    <td><%= f.select :status, [["Emerging", "emerging"], ["Investigating", "investigating"], ["Scheduled for Update", "Scheduled for Update"]], {}, :onchange => 'this.form.submit();' %>
    </td>
    <td><%= f.select :priority, [["Thermonuclear", "nuclear"],["Hot", "hot"], ["Warm", "warm"], ["Cool", "cool"]], {}, :onchange => 'this.form.submit();' %>
    </td>
    <% end %>
    <td><%= issue.case %></td>
    <td><%= issue.location %></td>
    <td><%= issue.customer.account_name %></td>
    <td><%= link_to 'Show', issue %></td>
    <td><%= link_to 'Edit', edit_issue_path(issue) %></td>
    <td><%= link_to 'Destroy', issue, :confirm => 'Are you sure?', :method => :delete %>   </td>
  </tr>
<% end %>

1 Ответ

1 голос
/ 06 февраля 2012

OK.Я нашел ответ, который мне нужен, чтобы сделать эту работу.Я использовал этот код для каждого из моих выбранных тегов:

<td><%= f.select :status, [["Emerging", "emerging"], ["Investigating", "investigating"], ["Scheduled for Update", "Scheduled for Update"]], {}, :onchange => "$.post('#{issue_path(issue)}', {'_method':'put', 'issue[status]':this.value} );" %>

Я нашел ответ в комментариях Stevo по этой ссылке: http://apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag

Это обновляет атрибут, но не перенаправляетстр.Я могу проверить, что значение меняется, перейдя в представление представления для записи.Я надеюсь, что это поможет кому-то еще бороться с этой проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...