Rails Simple_form HAML错误:没有路由匹配?

时间:2015-01-30 04:01:02

标签: ruby-on-rails ruby-on-rails-4 haml simple-form simple-form-for

~~~找到解决方案! ~~~ 我将jean_controller.rb中的def new方法更改为

def new
    @jean = Jean.create(params[:id])
end

并在我的_form partial中大写我的模型和描述(以匹配我的迁移文件中的大写模型和描述)

感谢所有人的帮助!

~~~~~~~~~~~~~~~~~

所以我已经广泛寻找解决我的问题的办法,但无济于事。它促使我专门创建一个帐户来提出这个问题。我正在使用rails 4.2.0

我正在使用本教程https://mackenziechild.me/12-in-12/4/构建一个Pinterest克隆,但是我的_form.html.haml部分遇到了这个错误:

  

Jeans#new中的ActionController :: UrlGenerationError   /app/views/jeans/_form.html.haml第1行引发:   没有路线匹配{:action =>“show”,:controller =>“jeans”}缺少必需的键:[:id]

我用input_html尝试了各种解决方案:改变我的模型,jeans_controller ......等等。

这是我的部分代码:(第一行正确缩进,但我不知道如何在stackoverflow上正确显示)

= simple_form_for @jean, html: { multipart: true } do |f|
- if @jean.errors.any?
    #errors
        %h2
            = pluralize(@jean.errors.count, "error")
            prevented this Jean Model from saving
        %ul
            - @jean.errors.full_messages.each do |msg|
                %li= msg

.form-group
    = f.input :model, input_html: { class: 'form-control' }

.form-group
    = f.input :description, input_html: { class: 'form-control' }

.form-group
    = f.input :price, input_html: { class: 'form-control' }

= f.button :submit, class: "btn btn-primary"

这是我的控制器代码:

class JeansController < ApplicationController

def index
end

def show
    @jean=Jean.find(params[:id])
end

def new
    @jean = Jean.new
end

def create
    @jean = Jean.new(jean_params)
end

private

def jean_params
    params.require(:jean).permit(:model, :description, :price)
end
end

和我的routes.rb

Rails.application.routes.draw do
  resources :jeans
  root "jeans#index"
end

任何人都可以帮助我吗? :(:

1 个答案:

答案 0 :(得分:0)

您需要在控制器中创建一个show动作以显示新发布的牛仔裤,基本上将其添加到您的控制器:

def show
  @jean=Jean.find(params[:id])
end

您还需要将创建操作更改为

def create
  @jean = Jean.create(jean_params)
end