Ruby on rails 我的显示页面需要如何编写才能显示数据?
我是Ruby on Rails领域的新手,我正在开发一个自然的下拉表单,您可以在这里的_form.html.erb中看到代码:Ruby on rails 我的显示页面需要如何编写才能显示数据?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我是Ruby on Rails领域的新手,我正在开发一个自然的下拉表单,您可以在这里的_form.html.erb中看到代码: <%= simple_form_for(@job, html: {class: 'form-horizontal'}) do |f| %> <div class="control-group"> <%= f.label "Poster:", class: 'control-label' %> <div cla
<%= simple_form_for(@job, html: {class: 'form-horizontal'}) do |f| %>
<div class="control-group">
<%= f.label "Poster:", class: 'control-label' %>
<div class="controls">
<%= f.select(:status, options_for_select([['Nick Maloney','Nick Maloney'],
['Peter Brown','Peter Brown'],['Jen Morris','Jen Morris']])) %>
</div>
</div>
<div class="control-group">
<%= f.label "Category:", class: 'control-label' %>
<div class="controls">
<%= f.select(:status, options_for_select([['Landscaping','Landscaping'],
['Babysitting','Babysitting'],['Tree planting','Tree planting']])) %>
</div>
</div>
<div class="control-group">
<%= f.label "Location:", class: 'control-label' %>
<div class="controls">
<%= f.select(:status, options_for_select([['Dorchester','Dorchester'],
['Roxbury','Roxbury'],['Mattapan','Mattapan']])) %>
</div>
</div>
<div class="control-group">
<%= f.label "Status:", class: 'control-label' %>
<div class="controls">
<%= f.select(:status, options_for_select([['New','New'],
['Pending','Pending'],['Complete','Complete']])) %>
</div>
</div>
<%= f.input :description, label: "Job Description" %>
<%= f.submit 'Add Job', class: 'btn btn-default' %>
<% end %>
我更改了表演动作以反映这一点:
def show
@job = Job.find(jobs_params[:id])
end
然后我得到一个参数缺失或值为空:job
我做了一个rails控制台,我有:
Job Load (1.1ms) SELECT "jobs".* FROM "jobs" LIMIT ? [["LIMIT", 11]] => #<ActiveRecord::Relation [#<Job id: 1, poster: nil, category: nil, location: nil, status: "New", description: "Your job is to plant trees all over the Dorchester...", created_at: "2017-08-01 10:29:40", updated_at: "2017-08-01 10:29:40">]>
我不明白为什么除了描述我什么都没有
似乎每个表单输入都是这样的:
class JobsController < ApplicationController
before_action :find_job, only: [:show, :edit, :update, :destroy]
def index
# @job = Job.all
end
def show
@job = Job.find_job(jobs_params[:id])
end
def new
@job = Job.new
end
def create
@job = Job.new(jobs_params)
if @job.save
redirect_to @job, notice: 'Your job was successfully added'
else
render "New"
end
end
def edit
end
def update
end
def destroy
end
private
def jobs_params
params.require(:job).permit(:poster, :category, :location, :status, :description)
end
def find_job
@job = Job.find(params[:id])
end
end
Rails.application.routes.draw do
resources :jobs
root 'jobs#index'
end
<div class="control-group">
<%= f.label "Poster:", class: 'control-label' %>
<div class="controls">
<%= f.select(:status, options_for_select([['Nick Maloney','Nick Maloney'],
['Peter Brown','Peter Brown'],['Jen Morris','Jen Morris']])) %>
</div>
在rails控制台中给了我一个零,只有这一个:
<%= f.input :description, label: "Job Description" %>
已成功输入数据,因此f.select的代码有问题,但我不确定是什么问题。从作业控制器的显示操作中删除此行:
@job = Job.find_job(jobs_params[:id])
改变这个
def show
@job = Job.find_job(jobs_params[:id])
end
对此
def show
end
@job记录由before_操作为您检索
并在show.html.erb中使用它
<h1><%= @job.poster %></h1>
<p><%= @job.category %></p>
<p><%= @job.location %></p>
<h1><%= @job.poster %></h1>
<p><%= @job.category %></p>
<p><%= @job.location %></p>
尝试将您的_form.html.erb替换为
show.html.erb
<h1><%= @job.poster %></h1>
<p><%= @job.category %></p>
<p><%= @job.location %></p>
<h1><%= @job.poster %></h1>
<p><%= @job.category %></p>
<p><%= @job.location %></p>
你有
职务编号:1,海报:无,类别:无,位置:无,状态:
新的,描述:你的工作是在全世界植树
多切斯特
因为mistek在_form.html.erb中的每个select中都使用了:status,您需要删除Job.find_Job。。从show action开始,因为它将尝试覆盖@job的当前值,该值在\u action之前已设置。此外,如果您试图根据id查找记录,则find\u job甚至不是activerecord中的方法。它应该是find或find_by@Ale将此行@job=job.find_jobs_params[:id]替换为@job=job.findjobs_params[:id]。其次,这就是为什么你要迭代@job的循环。它只有一个作业。如果你想要所有作业。那么你可以通过这个代码@jobs=job.all得到它,你可以迭代@jobs的循环@jobs@Vishal实际上,OP只需完全删除“查找”作业行即可。before_操作将为他获取记录。而jobs_参数在show中不可用。@SteveTurczyn Sorry我没有注意到该方法。是的,你是对的。不需要在show方法中更正任何内容。但是,如果他想要所有作业,那么他需要编写@jobs=Job.allSteve,我检查了我的rails控制台,我将继续得到一个空白屏幕,因为:[Snake,我检查了我的rails控制台,我将继续得到一个空白屏幕,因为:[
def show
end
<h1><%= @job.poster %></h1>
<p><%= @job.category %></p>
<p><%= @job.location %></p>