这是我通过表单创建新对象的代码:
我的'new.html.erb'文件:
<%= form_for @ticket, url: new_geradorqrcode_path(@ticket), html: { method: :put } do |t| %>
<p>
<%= t.label :Descricao %></br>
<%= t.text_area :descricao, cols: 20, rows: 5 %>
</p>
<p>
<%= t.label :Tipo %></br>
<%= t.text_field :tipo %>
</p>
<p>
<%= t.label :Tamanho %></br>
<%= t.number_field :tamanho_arquivo %>
</p>
<p>
<%= t.label :Cliente %></br>
<%= t.text_field :cliente %>
</p>
<p>
<%= t.label :Valor %></br>
<%= t.number_field :valor %>
</p>
<p>
<%= t.submit %>
</p>
但是当我点击“创建”按钮时,会出现此错误:
我在控制器中创建了'update'和'create'方法:
def update
@ticket = Ticket.find(params[:id])
ticket_params = params.require(:ticket).permit(:descricao,:valor, :cliente, :tamanho_arquivo, :tipo)
@ticket.update(ticket_params)
redirect_to url: geradorqrcode_path(@ticket), html: { method: :post }
end
和'create'方法:
def create
@ticket = Ticket.new(params[:ticket])
@ticket.save
redirect_to url: geradorqrcode_path(@ticket), html: {method: :post}
end
我的'新'动作
def new
@ticket = Ticket.new
end
和'routes.rb'
Rails.application.routes.draw do
root 'geradorqrcode#index'
resources :geradorqrcode
end
答案 0 :(得分:0)
<%= form_for @ticket, url: new_geradorqrcode_path(@ticket), html: { method: :put } do |t| %>
这是您的新表单,这意味着您正在处理尚未持久保存到数据库的新对象。 html: { method: :put }
语法适用于您希望表单更新已保留的对象的时间。这将在编辑页面上进行。在您的情况下,这是您的new
表单,在提交时会转到控制器中的create
操作。
<%= form_for @ticket, url: geradorqrcode_path(@ticket) do |t| %>
这是新表单的外观。试试这个,你应该得到你想要的东西。您将遇到的另一个问题是redirect_to
语法。从html: { method: :post }
和update
方法中删除create
。