我一直在创建一个我创建这些条目的系统,但问题是当我尝试创建编辑功能时,它不会更新帖子但会创建一个新的。
我的控制器文件如下所示:
class BetsController < ApplicationController
def new
@bet = Bet.new
end
def create
@bets = Bet.new(bet_params)
if @bets.save
flash[:success] = 'Bet Successfull Logged.'
redirect_to new_bet_path
else
flash[:danger] = 'Error, Bet has not been logged. Try again mate.'
redirect_to new_bet_path
end
end
def show
@bet = Bet.find(params[:id])
end
def edit
@bet = Bet.find(params[:id])
end
def update
@bet = Bet.find(params[:id])
if @bet.update_attributes(bet_params)
flash[:success] = "Bet Updated!"
redirect_to bet_path(params[:id])
else
render action: :edit
end
end
private
def bet_params
params.require(:bet).permit(:bet_placed, :game, :units_placed, :odds, :profit_or_loss)
end
end
提交的表单也是如此:
<%= form_for :bet, url: bets_path, :html => { :multipart => true } do |f| %>
<p class="form-group">
<%= f.label :bet_placed %><br>
<%= f.text_field :bet_placed, class: 'form-control' %>
</p>
<p class="form-group">
<%= f.label :game %><br>
<%= f.text_field :game, class: 'form-control' %>
</p>
<p class="form-group">
<%= f.label :units_placed %><br>
<%= f.text_field :units_placed, class: 'form-control' %>
</p>
<p class="form-group">
<%= f.label :odds %><br>
<%= f.text_field :odds, class: 'form-control' %>
</p>
<p class="form-group">
<%= f.label :profit_or_loss %><br>
<%= f.text_field :profit_or_loss, class: 'form-control' %>
</p>
<%= f.submit 'Update Profile', class: 'btn btn-default' %>
<% end %>
答案 0 :(得分:1)
当前设置表单的方式,它始终会点击create
操作。如果您将form_for
更改为以下内容,则应该
<%= form_for @bet do |f| %>
...
<% end %>
由于您的表单没有任何文件输入,因此您不需要multipart => true
。
答案 1 :(得分:0)
根据rails自然路由,路径bets_path
始终转到create方法。由于更新需要一个id,而你没有给它,所以它就是创建。
将表单更改为,
<%= form_for @bet, :html => { :multipart => true } do |f| %>
<p class="form-group">
<%= f.label :bet_placed %><br>
<%= f.text_field :bet_placed, class: 'form-control' %>
</p>
....................
<p class="form-group">
<%= f.label :profit_or_loss %><br>
<%= f.text_field :profit_or_loss, class: 'form-control' %>
</p>
<%= f.submit 'Update Profile', class: 'btn btn-default' %>
<% end %>
&#13;
供参考,
HTTPVerb Path controller#Action Named Helper
GET /bets bets#index bets_path
GET /bets/new bets#new new_bet_path
POST /bets bets#create bets_path
GET /bets/:id bets#show bet_path(:id)
GET /bets/:id/edit bets#edit edit_bet_path(:id)
PATCH/PUT /bets/:id bets#update bet_path(:id)
DELETE /bets/:id bets#destroy bet_path(:id)
&#13;