2016-12-03 119 views
0

我'收到此错误:未定义的方法`model_path”为#<#<Class:>更新方法

undefined method `invite_path' for #<#<Class:0x9396d38>:0x8f8fb30> 

我控制器

class ConfirmationsController < ApplicationController 
    skip_before_action :verify_authenticity_token 

    def index 
    @confirmation = Invite.joins(:user).select('invites.horario_desde, invites.horario_hasta, invites.estado, users.email, users.nombre, users.apellido, users.telefono, invites.complejo') 
     .where(:hash_id => filter_params[:hash_id],:user_id => filter_params[:user_id]).first 
    end 

(它只有一个记录)

我的路线

get '/confirmations' => 'confirmations#index' 
    post '/confirmations' => 'confirmations#update' 

而我的观点

<%= form_for @confirmation do |confirmation|%> 
    <p>Horario: de <%= confirmation.horario_desde %> a <%= confirmation.horario_hasta %></p> 
    <p>Email: <%= confirmation.email %></p> 
    <p>Teléfono: <%= confirmation.telefono %></p> 

    <%=f.submit 'Confirm'%> 
    <%=f.submit 'Cancel'%> 
<%end%> 

的想法是从我的控制器显示一些数据(@confirmations),如果用户点击“确认”应该更新我与特定的状态模型。但我甚至无法使这个表单起作用。

还有更好的方法吗?

由于

+0

对'select'过分指定通常是一个坏主意,使用'includes'加入相关模型会更安全。我认为你的非标准模型实例混淆了'form_for'。 – tadman

回答

2

错误,因为使用@confirmation对象的形式作用从控制器出现。您可以使用Resource-oriented style

尝试在您的项目目录下运行rake routes,您可以看到每个路由的一些别名。

例如:

confirmations GET  /confirmations(.:format)   confirmations#index 
confirmations POST  /confirmations(.:format)   confirmations#update 

使用别名路径表单的动作,这样的事情

<%= form_for @confirmation, url: confirmations_path(@confirmation) do |confirmation|%> 
    <%# .... another stuff here ... %> 
<% end %> 

注:confirmations_path只是一个例子。

+0

不工作:(现在即时获取错误,当它试图读取#confirmation属性>未定义的方法'字段'为#。我知道这个对象有东西在里面。一个拿走它的工作形式.. –

+0

@EzequielRamiro在你的窗体中的问题,但我不能看到你的窗体中的'字段'方法 –

+0

它可以安全地将它设置为'confirmations_path(nil)'?在我的情况下,它只是一个电子邮件联系表格,现在显示或索引需要。 –

相关问题