【发布时间】:2014-05-18 06:27:43
【问题描述】:
我对 Ruby 2.0 和 rails 4.0 有疑问。
我有一个 form_for 创建一个新的“项目”条目,其中包含标题、描述和状态。 表单本身曾经像一个魅力一样工作,直到我做了一些事情而我不知道是什么。问题是,表单呈现完美,但在向其添加 VALID 值并按下提交按钮后它什么也不做。如果我在输入值并提交之前刷新表单,则 url 将更改为:
projects/new?utf8=✓&authenticity_token=Xh6ZGV2vvth1RzhBk3g5zonms%2Fdq3yzaJtzxDU%2FFBiM%3D&project%5Btitle%5D=Project+title&project%5Bdescription%5D=description&project%5Bstatus%5D=Ongoing&commit=提交
奇怪的是,如果我在同一个文件中的第一个表单之后添加另一个完全相同的表单,那么第二个表单可以完美运行。
我的项目 new.html.erb
<h1>Create a new project</h1>
<div class="row">
<div class="col-md-5">
<%= form_for @project do |f| %>
<%= f.label :title %>
<%= f.text_field :title %>
<%= f.label :description %>
<%= f.text_field :description %>
<%= f.label :status %>
<%= f.select :status, [['Ongoing', 'Ongoing'],['Suspended','Suspended'],['Finished','Finished']] %>
<%= f.submit "Submit" %>
<% end %>
</div>
</div>
projects_controller.erb
def new
@project = Project.new
end
def create
@project = Project.new(project_params)
if @project.save
flash[:success] = "Project successfully created!"
redirect_to root_path
else
render 'new'
end
end
private
def project_params
params.require(:project).permit(:title, :description, :status)
end
正如我所说,它以前可以正常工作。 我也试过禁用 JS,但它仍然没有工作。 如果您对问题可能出在哪里有任何想法,请告诉我。谢谢。
编辑:
从 new.html.erb 生成的 HTML
<div class="container">
<h1>Create a new project</h1>
<div class="row">
<div class="col-md-5">
<form accept-charset="UTF-8" action="/projects" class="new_project" id="new_project" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="Xh6ZGV2vvth1RzhBk3g5zonms/dq3yzaJtzxDU/FBiM=" /></div>
<label for="project_title">Title</label>
<input id="project_title" name="project[title]" type="text" />
<label for="project_description">Description</label>
<input id="project_description" name="project[description]" type="text" />
<label for="project_status">Status</label>
<select id="project_status" name="project[status]"><option value="Ongoing">Ongoing</option>
<option value="Suspended">Suspended</option>
<option value="Finished">Finished</option></select>
<input name="commit" type="submit" value="Submit" />
</form> </div>
</div>
</div>
提交表单后添加日志:
Started GET "/projects/new?utf8=%E2%9C%93&authenticity_token=Xh6ZGV2vvth1RzhBk3g5zonms%2Fdq3yzaJtzxDU%2FFBiM%3D&project%5Btitle%5D=Project+title&project%5Bdescription%5D=description+of+the+project&project%5Bstatus%5D=Ongoing&commit=Submit" for 127.0.0.1 at 2014-05-17 20:44:39 +0100
Processing by ProjectsController#new as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"Xh6ZGV2vvth1RzhBk3g5zonms/dq3yzaJtzxDU/FBiM=", "project"=>{"title"=>"Project title", "description"=>"description of the project", "status"=>"Ongoing"}, "commit"=>"Submit"}
Rendered projects/new.html.erb within layouts/application (2.3ms)
Rendered layouts/_header.html.erb (0.2ms)
Rendered shared/_flash_messages.html.erb (0.1ms)
Completed 200 OK in 12ms (Views: 10.9ms | ActiveRecord: 0.0ms)
Started GET "/assets/custom.css?body=1" for 127.0.0.1 at 2014-05-17 20:44:39 +0100
Started GET "/assets/rails_bootstrap_forms.css?body=1" for 127.0.0.1 at 2014-05-17 20:44:39 +0100
Started GET "/assets/project.css?body=1" for 127.0.0.1 at 2014-05-17 20:44:39 +0100
Started GET "/assets/bootstrap.css?body=1" for 127.0.0.1 at 2014-05-17 20:44:39 +0100
Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2014-05-17 20:44:39 +0100
Started GET "/assets/bootstrap.min.css?body=1" for 127.0.0.1 at 2014-05-17 20:44:39 +0100
Started GET "/assets/projects.css?body=1" for 127.0.0.1 at 2014-05-17 20:44:39 +0100
Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2014-05-17 20:44:39 +0100
Started GET "/assets/jquery.turbolinks.js?body=1" for 127.0.0.1 at 2014-05-17 20:44:39 +0100
Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2014-05-17 20:44:39 +0100
Started GET "/assets/bootstrap.js?body=1" for 127.0.0.1 at 2014-05-17 20:44:39 +0100
Started GET "/assets/bootstrap.min.js?body=1" for 127.0.0.1 at 2014-05-17 20:44:39 +0100
Started GET "/assets/project.js?body=1" for 127.0.0.1 at 2014-05-17 20:44:39 +0100
Started GET "/assets/projects.js?body=1" for 127.0.0.1 at 2014-05-17 20:44:39 +0100
Started GET "/assets/turbolinks.js?body=1" for 127.0.0.1 at 2014-05-17 20:44:39 +0100
Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-05-17 20:44:39 +0100
【问题讨论】:
-
你能粘贴第一个代码sn-p生成的HTML吗?
-
您的请求是在获取请求中发送数据,您可以将表单标签生成的html粘贴到这里吗?
-
添加了由 new.html.erb 生成的 HTML
-
提交表单后发布您的
log。 -
你能分享来自
routes.rb的projects路由吗?
标签: ruby-on-rails forms