簡體   English   中英

為什么我的表格不起作用?

[英]Why my form don't work?

這是我的tournats_controller文件:

class TournamentsController < ApplicationController
before_action :authenticate_user!, only: [:new, :create, :destroy]

def index
end

def show
end

def new
    render action: 'new'
end

def create
    self.tournament = Tournament.new(tournament_params)
    if tournament.save
        flash[:info] = "Tournament created successfully!"
        redirect_to root_url
    else
        render action: 'new'
    end
end

def destroy
    Tournament.find(params[:id]).destroy
    flash[:success] = "Tournament deleted!"
    redirect_to root_url
end

private

    def tournament_params
        params.require(:tournament).permit(:name, :maxplayers)
    end

end

這是我的表單文件:

        = form_for tournament do |f|
        - if tournament.errors.any?
            #error_explanation
            %h2= "#{pluralize(tournament.errors.count, "error")} prohibited this tournament from being saved:"
            %ul
                - tournament.errors.full_messages.each do |msg|
                    %li= msg

        .form-group
            = f.label :name
            = f.text_field :name, class: 'form-control'
            = f.submit 'Save', class: 'btn btn-primary'

當我的應用程序運行時,控制台顯示此錯誤:

undefined local variable or method `tournament' for #<#<Class:0x007f0e414fa2d0>:0x007f0e418d9a90>

我正在使用簡單格式和Haml(如果重要)。 誰能向我解釋為什么我會收到此錯誤?

您必須使用實例變量:

def new
    @tournament = Tournament.new
    render action: 'new'
end

def create
    @tournament = Tournament.new(tournament_params)
    if @tournament.save
        flash[:info] = "Tournament created successfully!"
        redirect_to root_url
    else
        render action: 'new'
    end
end

  = form_for @tournament do |f|
    - if @tournament.errors.any?
        #error_explanation
        %h2= "#{pluralize(@tournament.errors.count, "error")} prohibited this tournament from being saved:"
        %ul
            - @tournament.errors.full_messages.each do |msg|
                %li= msg

    .form-group
        = f.label :name
        = f.text_field :name, class: 'form-control'
        = f.submit 'Save', class: 'btn btn-primary'
        = link_to 'Back', categories_path, class: 'btn btn-default'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM