У меня есть приложение Rails со списком потенциальных клиентов в таблице. В одном из столбцов я отображаю статус лида в выпадающем меню. Я хочу разрешить изменение этого статуса лида при изменении значения, выбранного в раскрывающемся списке.

Вот что я пробовал:

Код для отображения формы в ячейке таблицы:

      <% @leads.each do |lead| %>
  <tr>
    <td><%= lead.id %></td>
<td><%= form_for(lead,:url => 'update_lead_status') do |f| %>
              <div class="field">
                <%= f.select :status, ["to_call","called","confirmed","lite"], :selected => lead.status, onchange: "this.form.submit();" %>
              </div>
            <% end %>
        </td>

Мой метод update_lead_status в контроллере лидов:

#PUT
  def update_lead_status
    @lead = Lead.find(params[:id])
    respond_to do |format|
      # format.js
      if @lead.update_attributes(params[:lead])
        format.html { redirect_to leads_url, notice: 'Lead was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @lead.errors, status: :unprocessable_entity }
      end
    end
  end

Также я хочу, чтобы представление было в стиле Ajax без обновления.

5
sleeping_dragon 20 Апр 2013 в 14:07

1 ответ

Лучший ответ

Установите идентификатор формы, а затем отправьте форму

<%= form_for(lead,:url => 'update_lead_status',:html=>{:id=>'lead_form'}) do |f| %>

 <%= f.select :status, ["to_call","called","confirmed","lite"], :selected => lead.status, onchange: "$('#lead_form').submit();" %>
<% end %>
4
Amar 20 Апр 2013 в 14:43
Или вам нужно добавить пустой {} перед заменой
 – 
tomekfranek
8 Авг 2016 в 12:35