首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby on Rails未定义的方法`referrals_path

Ruby on Rails未定义的方法`referrals_path
EN

Stack Overflow用户
提问于 2021-07-15 20:52:47
回答 1查看 14关注 0票数 0

当我试图在我的数据库(sqlite3)上执行表单写入数据时,我得到了以下错误

undefined method `referrals_path' for #<ActionView::Base:0x00000000008cc8>

我的routes.rb

代码语言:javascript
复制
Rails.application.routes.draw do
...
  post "afiliados", to: "afiliados#create"
...
end

我的afiliados_controller.rb

代码语言:javascript
复制
class AfiliadosController < ApplicationController
...
def create
    cliente = params.require(:referral).permit(:nomeAfiliado, :nomeReferenciado, :comissao, :validadeComissao)
    Referral.create cliente
  end
end

我的cadastroTeste.html.erb

代码语言:javascript
复制
<html>
    <body>
        <a href="/afiliados">Voltar</a>
        <%= form_for Referral.new do |form| %>
            Nome <input type="text" name="referral[nomeAfiliado]"><br/>
            Nome Referenciado <input type="text" name="referral[nomeRef]"><br/>
            Comissão <input type="number" name="referral[comissao]"><br/>
            Válido até <input type="date" name="referral[validadeRef]"><br/>
            <button type="submit">Criar</button>
        <% end %>
    </body>
</html>

我正在学习Alura (在线编程学校)的教程,不知道该怎么做。我尝试将我的routes.rb更改为referral#create,但不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-15 21:05:38

我不确定教程中包含的内容,但您会收到此错误,原因如下:

代码语言:javascript
复制
<%= form_for Referral.new do |form| %>

它期望定义到其create动作的ReferralController和路由。您试图让Rails使用其在表单上的约定自动检测控制器和操作,但您没有在控制器上使用约定。这句话的意思是,应该在ReferralController create操作上创建Referral对象,而不是在AfiliadosController上。

如果你仍然想做这件事,你可以这样做:

代码语言:javascript
复制
<%= form_for afiliados_path do |form| %>

你可以在这里阅读更多关于这个的内容:https://guides.rubyonrails.org/form_helpers.html#dealing-with-model-objects

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68394214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档