DOM 元素属性未定义 - jquery / ruby on rails.

DOM element properties undefined - jquery / ruby on rails

本文关键字:ruby on rails jquery 元素 属性 未定义 DOM      更新时间:2023-09-26

我正在处理的Rails应用程序遇到了问题。 对象已成功保存到数据库,但是当它们在 DOM 中呈现时,其属性最初显示为未定义。 当我刷新浏览器时,一切都很好。

我不确定这个问题需要在哪里解决。

文档就绪:

$(function() {
    fetchClientsAndJobs();
});

有问题的函数:

function fetchClientsAndJobs() {
    $.get('/clients').done(function(clientData) {
        clientData.forEach(renderClient);
        $.get('/jobs').done(function(jobData) {
            jobData.forEach(renderJob)
        });
    });
}

和:

function addClient() {    
    var clientNameInput = $('input[name="name"]').val();
    var clientRateInput = $('input[name="rate"]').val();
    var clientEmailAddress = $('input[name="email-address"]').val();
    var newClient = {
        client: {
            name: clientNameInput,
            rate: clientRateInput,
            email_address: clientEmailAddress
        }
    };
    $.post('/clients', newClient).done(function(clientData) {
        renderClient(clientData)
        });
    $('input[name="name"]').val('');
    $('input[name="rate"]').val('');
    $('input[name="email-address"]').val('');
}

控制器操作:

def create
    @client = Client.new(client_params)
    @client.user_id = session[:current_user]
    if @client.save
        redirect_to root_path
    else
        redirect_to new_client_path
    end     
end

任何意见将不胜感激。 谢谢!

您的客户端代码似乎期望 post to the create 操作返回有关新创建的客户端的数据(因为您在done中调用renderClient

但是,您的创建操作会重定向到应用程序的根目录 - 我不知道它呈现了什么,但几乎可以肯定不是您期望的数据。

通常你会有一些类似的东西

respond_to do |format|
  format.json { render json: @client } #or whatever you are using to serialize your models to json
  format.html { redirect_to root_path }
end