当前位置: 首页 > 知识库问答 >
问题:

在服务器端找不到表单404上的Reactjs和rails实现错误

关飞翼
2023-03-14

我在前端视图中使用Reactjs,在后端使用Rails,我在这两个问题上都是新的,我通过Ajax在删除和编辑操作上得到了一个404找不到的结果。下面是我的部分代码,希望它会有所帮助:Customer.js.jsx var Customer=react.createClass({getInitialState:function(){return{edit:false};},

handleToggle: function(e) {
    e.preventDefault();
    this.setState({ edit: !this.state.edit });
},

handleDelete: function(e) {
    e.preventDefault();
    $.ajax({
        method: 'DELETE',
        url: '/customers/' + this.props.customer.id,
        dataType: 'json',
        success: function() {
            this.props.handleDeleteCustomer(this.props.customer)
        }.bind(this)
    });
},

handleEdit: function(e) {
    e.preventDefault();
    var data = { name: React.findDOMNode(this.refs.name).value,
        lastname: React.findDOMNode(this.refs.lastname).value,
        mobile: React.findDOMNode(this.refs.mobile).value,
        phone: React.findDOMNode(this.refs.phone).value,
        email: React.findDOMNode(this.refs.email).value,
        address: React.findDOMNode(this.refs.address).value,
        zip: React.findDOMNode(this.refs.zip).value,
        city: React.findDOMNode(this.refs.city).value,
        state: React.findDOMNode(this.refs.state).value}

    $.ajax({
        method: 'PUT',
        url: '/customers/' + this.props.customer.id,
        dataType: 'json',
        data: { customer: data },
        success: function(data) {
            this.setState({ edit: false });
            this.props.handleEditCustomer(this.props.customer, data);
        }.bind(this)
    });
},

customerRow: function() {
    return(
    <tr>
        <td>{this.props.customer.name}</td>
        <td>{this.props.customer.lastname}</td>
        <td>{this.props.customer.mobile}</td>
        <td>{this.props.customer.phone}</td>
        <td>{this.props.customer.email}</td>
        <td>{this.props.customer.address}</td>
        <td>{this.props.customer.city}</td>
        <td>{this.props.customer.zip}</td>
        <td>{this.props.customer.state}</td>
            <td>
                <a className='btn btn-default' onClick={this.handleToggle}>
                    Edit
                </a>
                <a className='btn btn-danger' onClick={this.handleDelete}>
                    Delete
                </a>
            </td>
        </tr>
    );
},...there is more. 

以下是我的控制器:

class CustomersController < ApplicationController
  before_action :set_customer, only: [:update, :destroy]

  def index
    @customers = Customer.all
  end

  def create
    @customer = Customer.new(customer_params)

    if @customer.save
      render json: @customer
    else
      render json: @customer.errors, status: :unprocessable_entity
    end
  end
end

def update
  if @customer.update(customer_params)
    render json: @customer
  else
    render json: @customer.errors, status: :unprocessable_entity
  end
end

def destroy
  @customer.destroy
  head :no_content
end

private

def customer_params
  params.require(:customer).permit(:name, :lastname, :mobile, :phone, :email, :address, :zip, :city, :state)
end

def set_customer
  @customer = Customer.find(params[:id])
end

以下是当我按下删除按钮时,服务器日志中的内容:[15007]127.0.0.1-[10/nov/2015:17:01:26-0400]“delete/Customers/1 HTTP/1.1”404 194 70 0.1995

以下是控制台日志:DELETE http://localhost:3000/customers/1 404(未找到)XHR完成加载:DELETE“http://localhost:3000/customers/1”

共有1个答案

狄凯
2023-03-14

正如我们在注释中讨论的那样,CustomersController实际上在Create方法之后结束,因此UpdateDestroyCustomer_ParamsSet_Customer方法都不属于CustomersController方法。因此,在create方法之后将第三个end移动到文件的末尾应该可以解决这个问题。您的控制器应该如下所示:

class CustomersController < ApplicationController
  before_action :set_customer, only: [:update, :destroy]

  def index
    @customers = Customer.all
  end

  def create
    @customer = Customer.new(customer_params)

    if @customer.save
      render json: @customer
    else
      render json: @customer.errors, status: :unprocessable_entity
    end
  end
# note that there was a third end here

  def update
    if @customer.update(customer_params)
      render json: @customer
    else
      render json: @customer.errors, status: :unprocessable_entity
    end
  end

  def destroy
    @customer.destroy
    head :no_content
  end

  private

  def customer_params
    params.require(:customer).permit(:name, :lastname, :mobile, :phone, :email, :address, :zip, :city, :state)
  end

  def set_customer
    @customer = Customer.find(params[:id])
  end
end # end moved to here
 类似资料:
  • 我有一个带有Spring Boot的简单微服务应用程序,我尝试添加Spring云网关服务,但它不起作用。所有的微服务,包括Eureka服务器,都工作得很好,但当我尝试使用网关路由访问某些微服务时,它找不到微服务。 ApiGateway pom。xml API网关应用程序。yml公司 API网关主 Api网关未找到404错误

  • 1.将我的文件上载到000webhost。我将公用文件夹中的所有文件放置到public_html,然后创建了一个名为laravel的文件夹,并在那里上载了所有其他文件。这是我的目录结构: 拉拉维尔 应用程序 引导 配置 .... 公共网页 index.html ...... 2.在我的索引中。php文件,我已经更改了一些内容 > 需要目录。'//laravel/引导/自动加载。php′; $app

  • 我一直从中得到: “404未找到-未找到”。 在服务器上找不到请求的URL。如果您手动输入URL,请检查拼写,然后再试一次。我肯定有一个愚蠢的错误,我是python新手,我花了几个小时试图理解这个问题。 我的代码: 注册格式为: 我确认我可以直接联系http://127.0.0.1:5000/register. 在调试模式下运行应用程序,这就是我得到的: 使用stat重新启动 调试器处于活动状态

  • 我有一个php文件在家里。php 我在localhost上的url是 我想删除从url 所以我创建了文件 但我一直收到这个错误 在此服务器上找不到请求的URL/photo/home。

  • 我在服务器上上传了我的网站,我的网站运行良好。但我有个问题。 当我从路由转到路由时,组件也被加载了。但是当我复制我的组件url时,我得到了。 例如,当我复制/粘贴此url时: http://test.shadyab.com/offers/Arya-Ceremonial-Pool-VIP-off 我有一个。 我的路线: 我的应用程序。js: 即使用户想要刷新当前网页,也会收到404错误。 我的服务器

  • 我在服务器上部署了laravel项目,收到以下错误: 我尝试了几乎所有我在网上找到的解决方案。问题保持不变。mod_rewrite启用。我添加了多行httpd.conf和修复DocumentRoot /etc/httpd/conf/httpd。形态 /var/www/html/chatbot/public/htaccess 请注意,当我尝试将DocumentRoot链接到一个新的laravel项目