【发布时间】:2017-08-23 23:37:55
【问题描述】:
在我的应用程序中,我在views/transactions/show.html.erb 中渲染了下面的部分,但是当我点击submit 时,我收到了这个错误:
undefined local variable or method 'f' for #<PapersController:0x007fa790b51190>
在控制器的这一行:
f.html { redirect_to "", notice: "Error: Paper Not created!!"}:
<%= form_for ( @newPaper ) do |f| %>
<div class="field">
<%= f.label :date, class: 'form-text'%>
<%= f.date_select :date %>
</div>
<br />
<div class="field">
<%= f.label :paper_type %>
<%= f.select(:paper_type, options_for_select(Paper::PAPER_TYPES)) %>
</div>
<br>
<div class="field">
<%= f.label :paper_weight %> :<%= f.number_field :paper_weight, class: 'form-fields' %> -kg.
</div>
<br />
<div class="field">
<%= f.label :env_paper_weight %> :
<%= f.number_field :env_paper_weight, class: 'form-fields' %> -kg.
</div>
<br />
<br>
<div class="actions">
<%= f.submit "Add Paper" %>
</div>
<% end %>
papers_controller.rb
class PapersController < ApplicationController
before_action :set_paper, only: [:edit, :update, :show, :destroy]
before_action :paper_owner, only: [ :edit, :update, :destroy]
def index
all_paper_type_values = Paper.all.pluck(:paper_type).uniq
@data_for_chart = all_paper_type_values.map do |paper_type|
{ name: paper_type, data: Paper.where(paper_type: paper_type).group_by_month(:created_at).sum(:paper_weight)}
end
@pappi = Paper.all
@newPaper = Paper.new
end
def new
@paper = Paper.new
end
def create
@paper = Paper.new(paper_params)
@paper.user_id = current_user.id
if (@newPaper.save)
redirect_to transaction_path(current_user), :notice => "Post has been saved successfully."
else
f.html { redirect_to "", notice: "Error: Paper Not created!!"}
end
end
def update
if @paper.update(paper_params)
flash[:success] = "Line was successfully updated"
redirect_to papers_path(@paper)
else
render 'edit'
end
end
def destroy
@paper.destroy
flash[:danger] = "Line was successfully destroyed"
redirect_to transaction_path(current_user)
end
private
def set_paper
@paper = Paper.find(params[:id])
end
def paper_params
params.require(:paper).permit(:user_id, :paper_type, :date, :paper_weight, :env_paper_weight)
end
def paper_owner
unless @paper.user_id == current_user.id
flash[:notice] = 'Access denied as you are not owner of this Job'
redirect_to papers_path
end
end
end
transaction_controller.rb
class TransactionsController < ApplicationController
def new
@paper = current_user.papers.build
@kwst = current_user.kwsts.build
@hwater = current_user.hwaters.build
@transport = current_user.transports.build
end
def show
@user = User.find(params[:id])
@username = params[:id]
@newPaper = Paper.new
@newKwst = Kwst.new
@newHwater = Hwater.new
@newTransport = Transport.new
@papers = current_user.papers.order(created_at: :desc).limit(5)
@kwsts = current_user.kwsts.order(created_at: :desc)
@hwaters = current_user.hwaters.order(created_at: :desc)
@transports = current_user.transports.order(created_at: :desc)
end
end
我改变了:
<%= form_for ( @newPaper ) do |f| %>
到
<%= form_for Paper.new do |f| %>
在paper_controller.rb 中但仍然得到错误。我有点迷路了,有人可以帮助我吗?
【问题讨论】:
标签: ruby-on-rails ruby