Ruby on rails 事件id为零

Ruby on rails 事件id为零,ruby-on-rails,model-view-controller,link-to,Ruby On Rails,Model View Controller,Link To,我正在尝试连接我的页面,以便用户有一个显示页面,一旦他们到达显示页面,他们就会看到事件。也可以单击该事件,一旦单击该事件,它将直接进入该事件显示页面。我得到的错误是 No route matches {:action=>"show", :controller=>"events", :id=>nil} 以下是我的事件窗体的外观: <span class="name">EventName: <%= link_to(event.name, controller:

我正在尝试连接我的页面,以便用户有一个显示页面,一旦他们到达显示页面,他们就会看到事件。也可以单击该事件,一旦单击该事件,它将直接进入该事件显示页面。我得到的错误是

No route matches {:action=>"show", :controller=>"events", :id=>nil}
以下是我的事件窗体的外观:

<span class="name">EventName: <%= link_to(event.name, controller: "events", action: "show", id: @event) %></span>
<span class="partycode">PartyCode:<br><%= event.partycode %></span>
EventName:
PartyCode:
这是我的事件控制器:

class EventsController < ApplicationController
    def show
        @event = Event.find(params[:id])
    end

    def create
        @event = current_user.events.build(event_params)
        if @event.save
            flash[:success] = "Event Created!"
            redirect_to root_url
        else
            render 'welcome#index'
        end
    end

    def destroy
    end

    private 

      def event_params
        params.require(:event).permit(:name, :partycode)
      end
end
类事件控制器
如果您需要更多代码来解决问题,请告诉我我的错误发生在第一行的事件表单中。这确实令人沮丧,因为这应该是一项简单的任务。

尝试改变

<%= link_to(event.name, controller: "events", action: "show", id: @event) %>



(注意模板中缺少@)。

如何使用路径帮助程序,例如
event\u path(@event)

你的观点会变成:

<%= link_to(@event.name, event_path(@event) %>


通常在
创建
操作中,您执行
重定向到事件路径(@event)
或类似操作。任意
render
调用可能会导致问题。我如何重定向回“用户显示”页面(即我创建事件的地方)有时在提交表单上输入“重定向到”参数是值得的,您可以使用该参数将用户发送回其原始页面。为了简洁起见,我通常称这个参数为
r
,但您可以随意调用它。只要确保将它放在表单本身中,并确保即使有表单错误,它也保持填充状态,并且需要两次尝试才能成功创建。我建议人们使用
saverescue-ActiveRecord::RecordInvalid
,它可以用于重新呈现表单并请求修复。
<%= link_to(@event.name, event_path(@event) %>