后面的参数部分。丢失(.com)

时间:2019-07-07 12:15:14

标签: ruby-on-rails ruby

所以我试图在这里创建一个聊天系统。 我创建了一个从ApplicationRecord扩展过来的MessageThread类。 我想获取链接到特定电子邮件的所有线程,并以json格式返回它们,这就是我的方法:

def show
    threads = MessageThread.where(thread_owner: params[:id])
     render json: {
        status: 'SUCCESS',
        message: 'Thread list fetched',
        data: threads,
     }, status: :ok
end

我记录了params[:id],它与我在React前端中发送的内容相对应。

这里的问题是threads返回一个空数组(我可以将其转换为与该电子邮件没有关联的线程)。

现在最棘手的部分是,如果我在Rails控制台中执行此操作:

threads = MessageThread.where(thread_owner: "testmail@ki.com")

它将返回一个包含3个线程的数组(所有都链接到该邮件)。

那么为什么这在Rails控制台中起作用而在我的Rails控制器中不起作用?

编辑: 这是我处理请求的前端:

async requestThread(data) {
        await fetch(`http://localhost:3000//message_threads/${data}`, {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json'
            }
        })
            .then(response => response.json())
            .then(data => {
                console.log(data)
            })
            .catch(e => {
                console.log(e)
            })
    }

    generateJsonData = () => {
        this.requestThread(localStorage.getItem('email'))
    }

编辑2: 我刚发现我的邮件扩展名在进入rails时就消失了。 它像mail@gmail而不是mail@gmail.com

1 个答案:

答案 0 :(得分:1)

我在这里找到了解决方法:Rails — Params with "dot" (e.g. /google.com)

发生的事情是,rails无法获得我电子邮件的.com扩展名,从而导致数组为空。 这是我上MessageThread类的路线:

resources :message_threads, constraints: { id: /[0-z\.]+/ }