Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:更新模型属性。缺少模板时出错_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails:更新模型属性。缺少模板时出错

Ruby on rails Rails:更新模型属性。缺少模板时出错,ruby-on-rails,Ruby On Rails,我正在尝试创建一个页面来编辑/更新记录,但出现以下错误: Missing template tickets/update, application/update with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in: * "/home/ubuntu/workspace

我正在尝试创建一个页面来编辑/更新记录,但出现以下错误:

Missing template tickets/update, application/update with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in: * "/home/ubuntu/workspace/app/views" 
我的票务控制员:

    class TicketsController < ApplicationController
  before_action :logged_in_user, only: [:create, :destroy, :index]
  def index
    @tickets = Ticket.all
  end

  def show
        @ticket = Ticket.find(params[:id])

  end

  def edit 
    @ticket = Ticket.find(params[:id])
  end

  def update
    @ticket = Ticket.find(params[:id])
    if @ticket.update_attributes(ticket_params)
      flash[:success] = "Ticket atualizado!"
      redirect_to @ticket
    else
      render 'edit'
    end
  end

  def new
    @ticket = Ticket.new
    @user = current_user
  end

  def create
    @ticket = Ticket.new(ticket_params)
    @ticket.user = current_user

    if @ticket.save
      redirect_to @ticket
    else
      render :new
    end
  end

  def destroy
  end

  def update
  end

  private

  def ticket_params
    params.require(:ticket).permit(:subject, :body, :status)
  end

end
我是基于同一应用程序中的另一个模型编写的,该模型在更新属性时没有错误。 已尝试更改为
@ticket.update_attributes(params[:ticket])
和其他有关stackoverflow的建议,但没有成功

我错过了什么


对不起,我的英语不好。

Rails中控制器操作的行为是。发生这种情况时,Rails将查找与操作同名的模板

Ruby允许您这样做,这在您打算重写现有方法的行为时非常有用

在本例中,要执行的第一个
update
方法被第二个
update
方法覆盖。第二个
update
方法没有任何作用,因此默认情况下Rails尝试呈现一个名为
tickets/update
的模板。这就是导致
缺少模板票据/更新
错误的原因


要解决此问题,您需要删除不需要的第二个方法。

Rails中控制器操作的行为是。发生这种情况时,Rails将查找与操作同名的模板

Ruby允许您这样做,这在您打算重写现有方法的行为时非常有用

在本例中,要执行的第一个
update
方法被第二个
update
方法覆盖。第二个
update
方法没有任何作用,因此默认情况下Rails尝试呈现一个名为
tickets/update
的模板。这就是导致
缺少模板票据/更新
错误的原因


要解决此问题,您需要删除不需要的第二个方法。

在TicketController中,您是否意外地在文件的更下方有了
update
方法的第二个定义?看起来它需要在views/tickets文件夹中有一个update.html.erb文件。然而,发送到update方法的请求很可能应该是put或patch方法,这不需要这样做,因此我认为表单的路由或方法可能有问题。什么是耙路线的返回?你能把它寄出去吗?更新方法有post方法吗?@cschroed我不知道你是怎么发现的,但这就是问题所在!非常感谢你!我将更新问题以指出问题所在,以便您能够正确回答。(我不知道这是否是正确的程序)@cschroed Done!已将问题更新为整个Tickets.Controller。等待您的答案标记为正确!再次感谢我正在学习Rails并花了一整天的时间在这个=PIn-the-tickets控制器上,您是否意外地在文件的下面有了
update
方法的第二个定义?看起来它希望在views/tickets文件夹中有一个update.html.erb文件。然而,发送到update方法的请求很可能应该是put或patch方法,这不需要这样做,因此我认为表单的路由或方法可能有问题。什么是耙路线的返回?你能把它寄出去吗?更新方法有post方法吗?@cschroed我不知道你是怎么发现的,但这就是问题所在!非常感谢你!我将更新问题以指出问题所在,以便您能够正确回答。(我不知道这是否是正确的程序)@cschroed Done!已将问题更新为整个Tickets.Controller。等待您的答案标记为正确!再次感谢,我正在学习Rails,并且花了一整天的时间在这个=p伟大的答案上!阅读文档时很难记住这些事情,但这一点我永远不会忘记!=]答案也很好!阅读文档时很难记住这些事情,但这一点我永远不会忘记!=]
<h1>Editar Ticket</h1>

<h2><%= @ticket.subject %></h2>

<div class ="row">
  <div class="col-md-6 col-md-offset-3">
    <%= form_for(@ticket) do |f| %>
      <%= render 'shared/error_messages', object: f.object %>
      <%= f.label :status %>
      <%= f.select :status, ['Aberto', 'Resolvido',  'Fechado', 'Processando']%>

      <p><%= @ticket.body %></p>

      <%= f.submit "Salvar", class: "btn btn-primary" %>
    <% end %>
  </div>
</div>
    Processing by TicketsController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"ljRnDwjCpKhL+Jl4PkQbLiyEESHnVMgQjpt2EJ6QoEhMza03feBRzz3xOAFsjnjWz7+ASAuGn1qKx+gHtUIm7w==", "ticket"=>{"status"=>"Fechado"}, "commit"=>"Salvar", "id"=>"16"}
Completed 500 Internal Server Error in 4ms (ActiveRecord: 0.0ms)

ActionView::MissingTemplate (Missing template tickets/update, application/update with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}.