代码之家  ›  专栏  ›  技术社区  ›  Patricio Sard

由controller处理#操作为JS而不是HTML(我想将其处理为HTML)

  •  0
  • Patricio Sard  · 技术社区  · 7 年前

    我有一个表单来编辑资源,与所有其他帖子不同,我想将其作为HTML而不是JS进行处理。

    我不知道为什么 Processing by UserDataController # edit_contact as JS 而不是HTML。

    我还删除了turbolinks,但我用scaffold生成的其他几个表单工作得很好(它们被处理为HTML而不是JS),但我制作的这个自定义表单的作用正好相反,所以我不知道这是什么。

    整个控制器是:

    class UserDataController < ApplicationController
      before_action :authenticate_user!, except: [:index, :show]
    
      def reputation
      end
    
      def edit_contact
      end
    
      def update_contact
        if current_user.contact_info.update(contact_params)
          redirect_to user_data_edit_contact_path, notice: 'Se editaron los datos de contacto exitosamente.'
        else
          redirect_to user_data_edit_contact_path, alert: 'Hubieron errores al editar los datos de contacto.'
        end
      end
    
      def edit_payments
      end
    
      def update_payments
        if current_user.payment_method.update(payments_params)
          redirect_to user_data_edit_payments_path, notice: 'Se editaron los metodos de pago exitosamente.'
        else
          redirect_to user_data_edit_payments_path, alert: 'Hubieron errores al editar los metodos de pago.'
        end
      end
    
      private
        # Never trust parameters from the scary internet, only allow the white list through.
        def contact_params
          params.permit(:name, :last_name, :region, :city, :commune, :email, :cellphone, :whatsapp, :facebook, :telegram)
        end
    
        def payments_params
          params.permit(:name, :in_person, :paypal, :payoneer, :western_union, :bank_transfer, :check, :cryptos)
        end
    end
    

    以及窗体的视图:

    <%= form_with url: user_data_update_contact_path, method: :post do |form| %>
      <div class="row">
        <div class="col-xs-4">
            <h3>Informacón personal</h3>
    
          <div class="form-group">
            <%= form.label :name, 'Nombre' %>
            <%= form.text_field :name, value: current_user.contact_info.name, class: 'form-control' %>
          </div>
    
          <div class="form-group">
            <%= form.label :last_name, 'Apellido' %>
            <%= form.text_field :last_name, value: current_user.contact_info.last_name, class: 'form-control' %>
          </div>
        </div>
    
        <div class="col-xs-4">
          <h3>Otros medios de contacto</h3>
    
          <div class="form-group">
            <%= form.label :email, 'Correo' %>
            <%= form.text_field :email, value: current_user.contact_info.email, class: 'form-control' %>
          </div>
    
          <div class="form-group">
            <%= form.label :cellphone, 'Celular' %>
            <%= form.text_field :cellphone, placeholder: '+569', value: current_user.contact_info.cellphone, class: 'form-control' %>
          </div>
    
          <div class="form-group">
            <%= form.label :whatsapp %>
            <%= form.select :whatsapp, options_for_select([['Si', true], ['No', false]], current_user.contact_info.whatsapp), {}, { class: "form-control" } %>
          </div>
    
          <div class="form-group">
            <%= form.label :facebook, 'Usuario de facebook' %>
            <%= form.text_field :facebook, placeholder: 'Link entero al perfil de facebook', value: current_user.contact_info.facebook, class: 'form-control' %>
          </div>
    
          <div class="form-group">
            <%= form.label :telegram, 'Usuario de telegram' %>
            <%= form.text_field :telegram, placeholder: 'Id del usuario', value: current_user.contact_info.telegram, class: 'form-control' %>
          </div>
        </div>
    
        <div class="col-xs-4">
          <h3>Localidad</h3>
    
          <div class="form-group">
            <%= form.label :region, 'Región' %>
            <%= form.select :region, options_for_select(['', 'Arica y Parinacota', 'Tarapacá', 'Antofagasta', 'Atacama', 'Coquimbo', 'Valparaíso', 'Metropolitana de Santiago', 'Lib. Gral. Bernardo O\'Higgins', 'Maule', 'Biobío', 'La Araucanía', 'Los Ríos', 'Los Lagos', 'Aysén del Gral. C. Ibáñez del Campo', 'Magallanes y Antártica Chilena'], current_user.contact_info.region), {}, { class: "form-control selectpicker", "data-live-search" => "true" } %>
          </div>
    
          <div class="form-group">
            <%= form.label :commune, 'Comuna' %>
            <%= form.select :commune, options_for_select(['', 'Arica', 'Camarones', 'Putre', 'General Lagos', 'Iquique', 'Alto Hospicio', 'Pozo Almonte', 'Camiña', 'Colchane', 'Huara', 'Pica', 'Antofagasta', 'Mejillones', 'Sierra Gorda', 'Taltal', 'Calama', 'Ollagüe', 'San Pedro de Atacama', 'Tocopilla', 'María Elena', 'Copiapó', 'Caldera', 'Tierra Amarilla', 'Chañaral', 'Diego de Almagro', 'Vallenar', 'Alto del Carmen', 'Freirina', 'Huasco', 'La Serena', 'Coquimbo', 'Andacollo', 'La Higuera', 'Paihuano', 'Vicuña', 'Illapel', 'Canela', 'Los Vilos', 'Salamanca', 'Ovalle', 'Combarbalá', 'Monte Patria', 'Punitaqui', 'Río Hurtado', 'Valparaíso', 'Casablanca', 'Concón', 'Juan Fernández', 'Puchuncaví', 'Quintero', 'Viña del Mar', 'Isla de Pascua', 'Los Andes', 'Calle Larga', 'Rinconada', 'San Esteban', 'La Ligua', 'Cabildo', 'Papudo', 'Petorca', 'Zapallar', 'Quillota', 'La Calera', 'Hijuelas', 'La Cruz', 'Nogales', 'San Antonio', 'Algarrobo', 'Cartagena', 'El Quisco', 'El Tabo', 'Santo Domingo', 'San Felipe', 'Catemu', 'Llaillay', 'Panquehue', 'Putaendo', 'Santa María', 'Quilpué', 'Limache', 'Olmué', 'Villa Alemana', 'Rancagua', 'Codegua', 'Coinco', 'Coltauco', 'Doñihue', 'Graneros', 'Las Cabras', 'Machalí', 'Malloa', 'Mostazal', 'Olivar', 'Peumo', 'Pichidegua', 'Quinta de Tilcoco', 'Rengo', 'Requínoa', 'San Vicente', 'Pichilemu', 'La Estrella', 'Litueche', 'Marchihue', 'Navidad', 'Paredones', 'San Fernando', 'Chépica', 'Chimbarongo', 'Lolol', 'Nancagua', 'Palmilla', 'Peralillo', 'Placilla', 'Pumanque', 'Santa Cruz', 'Talca', 'Constitución', 'Curepto', 'Empedrado', 'Maule', 'Pelarco', 'Pencahue', 'Río Claro', 'San Clemente', 'San Rafael', 'Cauquenes', 'Chanco', 'Pelluhue', 'Curicó', 'Hualañé', 'Licantén', 'Molina', 'Rauco', 'Romeral', 'Sagrada Familia', 'Teno', 'Vichuquén', 'Linares', 'Colbún', 'Longaví', 'Parral', 'Retiro', 'San Javier', 'Villa Alegre', 'Yerbas Buenas', 'Concepción', 'Coronel', 'Chiguayante', 'Florida', 'Hualqui', 'Lota', 'Penco', 'San Pedro de La Paz', 'Santa Juana', 'Talcahuano', 'Tomé', 'Hualpén', 'Lebu', 'Arauco', 'Cañete', 'Contulmo', 'Curanilahue', 'Los Álamos', 'Tirúa', 'Los Ángeles', 'Antuco', 'Cabrero', 'Laja', 'Mulchén', 'Nacimiento', 'Negrete', 'Quilaco', 'Quilleco', 'San Rosendo', 'Santa Bárbara', 'Tucapel', 'Yumbel', 'Alto Biobío', 'Chillán', 'Bulnes', 'Cobquecura', 'Coelemu', 'Coihueco', 'Chillán Viejo', 'El Carmen', 'Ninhue', 'Ñiquén', 'Pemuco', 'Pinto', 'Portezuelo', 'Quillón', 'Quirihue', 'Ránquil', 'San Carlos', 'San Fabián', 'San Ignacio', 'San Nicolás', 'Treguaco', 'Yungay', 'Temuco', 'Carahue', 'Cunco', 'Curarrehue', 'Freire', 'Galvarino', 'Gorbea', 'Lautaro', 'Loncoche', 'Melipeuco', 'Nueva Imperial', 'Padre Las Casas', 'Perquenco', 'Pitrufquén', 'Pucón', 'Saavedra', 'Teodoro Schmidt', 'Toltén', 'Vilcún', 'Villarrica', 'Cholchol', 'Angol', 'Collipulli', 'Curacautín', 'Ercilla', 'Lonquimay', 'Los Sauces', 'Lumaco', 'Purén', 'Renaico', 'Traiguén', 'Victoria', 'Valdivia', 'Corral', 'Lanco', 'Los Lagos', 'Máfil', 'Mariquina', 'Paillaco', 'Panguipulli', 'La Unión', 'Futrono', 'Lago Ranco', 'Río Bueno', 'Puerto Montt', 'Calbuco', 'Cochamó', 'Fresia', 'Frutillar', 'Los Muermos', 'Llanquihue', 'Maullín', 'Puerto Varas', 'Castro', 'Ancud', 'Chonchi', 'Curaco de Vélez', 'Dalcahue', 'Puqueldón', 'Queilén', 'Quellón', 'Quemchi', 'Quinchao', 'Osorno', 'Puerto Octay', 'Purranque', 'Puyehue', 'Río Negro', 'San Juan de la Costa', 'San Pablo', 'Chaitén', 'Futaleufú', 'Hualaihué', 'Palena', 'Coyhaique', 'Lago Verde', 'Aysén', 'Cisnes', 'Guaitecas', 'Cochrane', 'O\'Higgins', 'Tortel', 'Chile Chico', 'Río Ibáñez', 'Punta Arenas', 'Laguna Blanca', 'Río Verde', 'San Gregorio', 'Cabo de Hornos', 'Antártica', 'Porvenir', 'Primavera', 'Timaukel', 'Natales', 'Torres del Paine', 'Santiago', 'Cerrillos', 'Cerro Navia', 'Conchalí', 'El Bosque', 'Estación Central', 'Huechuraba', 'Independencia', 'La Cisterna', 'La Florida', 'La Granja', 'La Pintana', 'La Reina', 'Las Condes', 'Lo Barnechea', 'Lo Espejo', 'Lo Prado', 'Macul', 'Maipú', 'Ñuñoa', 'Pedro Aguirre Cerda', 'Peñalolén', 'Providencia', 'Pudahuel', 'Quilicura', 'Quinta Normal', 'Recoleta', 'Renca', 'San Joaquín', 'San Miguel', 'San Ramón', 'Vitacura', 'Puente Alto', 'Pirque', 'San José de Maipo', 'Colina', 'Lampa', 'Til Til', 'San Bernardo', 'Buin', 'Calera de Tango', 'Paine', 'Melipilla', 'Alhué', 'Curacaví', 'María Pinto', 'San Pedro', 'Talagante', 'El Monte', 'Isla de Maipo', 'Padre Hurtado', 'Peñaflor'], current_user.contact_info.commune), {}, { class: "form-control selectpicker", "data-live-search" => "true" } %>
          </div>
        </div>
    
      </div>
    
      <br />
    
      <div class="row text-center">
        <div class="actions">
          <%= form.submit "Guardar" %>
        </div>
      </div>
    <% end %>
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Vasilisa    7 年前

    form_with 帮助者具有 remote: true Rails 5中的默认选项。您需要添加 local: true 将其行为更改为使用html