Простая форма делает ошибки удаленного броска - PullRequest
0 голосов
/ 15 мая 2019

У меня проблемы с тем, что моя simple_form не работает, когда я пытаюсь сделать ее удаленной.Я не хочу обновлять всю страницу и только область, которая имеет форму.В настоящее время у меня есть это:

<div class="col-2">
    <%= simple_form_for ([current_user, @character]), defaults: {label: false} do |m| %>
        <%= m.simple_fields_for :dnd5e_sheet do |p| %>
            <%= p.input :acrobatics, as: :boolean, input_html: { onchange: 'this.form.submit();' } %>
        <% end %>
    <% end %>
</div>

, который работает, но обновляется вся страница, поэтому я добавил новый маршрут:

resources :user, only: [:show] do
    resources :characters do
      put "minus-hp", to: "characters#minus_hp"
      put "add-hp", to: "characters#add_hp"
      patch "skill-update", to: "characters#skill_update"
    end
    resources :campaigns
  end 

И в контроллере я сделал новое действие:

def skill_update
    @character = Character.includes(:dnd5e_sheet)
                          .find(params[:character_id])
    @character.update(character_params)
    respond_to do |format|
      format.js { render partial: 'characters/DnD5e/skills' }
    end
  end

В файле skill.js.erb имеется простой рендер:

$("#stats").html("<%= escape_javascript(render partial: 'characters/DnD5e/skills_card') %>");

Я перепробовал любую комбинацию URL-путей, которую только мог придумать, и не смог получить ни одного из них.работать.

Редактировать: я тоже пробовал это:

<%= simple_form_for @character, url: user_character_skill_update_path(current_user, @character), method: :put, remote: true, :authenticity_token => true, defaults: {label: false} do |m| %>
                          <%= m.simple_fields_for :dnd5e_sheet do |p| %>
                            <%= p.input :acrobatics, as: :boolean, input_html: { onchange: 'this.form.submit();' } %>
                          <% end %>
                        <% end %>

, но отправляет его как HTML-запрос вместо javascript, поэтому вы получите ошибку в response_to

1 Ответ

0 голосов
/ 15 мая 2019

Так выяснилось из этого вопроса Рельсы Пытается отправить форму об изменении выпадающего списка

То, что было неправильно, было не формой или удаленным значением true, а событием onchange, поэтому изменило его на следующее:

<%= m.input :acrobatics, input_html: { onchange: 'Rails.fire(this.form, "submit")' } %>

и все работает как положено для удаленной формы

...