Ruby 1.9.2p290
Rails 3.1.0
私は足場からサイトを構築し、ルートを変更しようとしているので、:idを使用する代わりに:gameNumberを使用できます。
私のコントローラーで私は変更しました
から
@ticket = Ticket.find(params[:id])
に
@ticket = Ticket.find_by_gameNumber(params[:id])
私の見解では私は変わった
から
ticket
に
ticket_path(ticket.gameNumber)
私が抱えている問題は、更新しようとすると、nilエラーが発生することです。問題は、更新ボタンが:gameNumberではなく:idを使用しているためだとわかっていますが、修正方法がわかりません。問題に関連するコードは次のとおりです。
コントローラ
def update
@ticket = Ticket.find_by_gameNumber(params[:id])
respond_to do |format|
if @ticket.update_attributes(params[:ticket])
format.html { redirect_to ticket_path(@ticket.gameNumber), notice: 'Ticket was successfully updated.' }
format.json { head :ok }
else
format.html { render action: "edit" }
format.json { render json: @ticket.errors, status: :unprocessable_entity }
end
end
end
形
<%= form_for(@ticket) do |f| %>
問題を説明したり、問題を説明したり、解決策を提供したり、これを行うためのより良い方法を提供したりできるリンクを誰かが教えてくれれば、本当にありがたいです。
ありがとう。
アップデート:
エラーは次のとおりです。
TicketsController#updateのNoMethodError
You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.update_attributes
Rails.root:C:/ home / worksheet / App
アプリケーショントレース
app / controllers / ticket_controller.rb:65:block in update'
app/controllers/tickets_controller.rb:64:in
更新中 '
リクエスト
パラメーター:
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"4ft2LU5CRcV+qV8ipjBm23TTBrXlmHjA042SpSZOkMc=",
"ticket"=>{"gameNumber"=>"1114",
"gameName"=>"Fun"
"isClosing"=>"0",
"isActive"=>"1"},
"commit"=>"Update Ticket",
"key"=>:gameNumber,
"id"=>"220"}
フレームワークトレースとフルトレースもご希望ですか?
アップデート2:
モデルに以下を追加すると、次のようになります。
def to_param
gameNumber
end
次のエラーが発生します。
Tickets#editのNoMethodError
行#1が発生したC:/home/workspace/App/app/views/tickets/_form.html.erbを表示しています。
undefined method `split' for 1114:Fixnum
抽出されたソース(1行目あたり):
1: <%= form_for(@ticket) do |f| %>
2: <% if @ticket.errors.any? %>
3: <div id="error_explanation">
4: <h2><%= pluralize(@ticket.errors.count, "error") %> prohibited this ticket from being saved:</h2>
テンプレートの包含のトレース:app / views / tickets / edit.html.erb
Rails.root:C:/ home / worksheet / App
アプリケーショントレース:
app/views/tickets/_form.html.erb:1:in `_app_views_tickets__form_html_erb__464096833_36793764'
app/views/tickets/edit.html.erb:3:in `_app_views_tickets_edit_html_erb__750875298_37634784'
リクエスト
パラメーター:
{"key"=>:gameNumber,
"id"=>"1114"}