【发布时间】:2011-03-19 08:32:45
【问题描述】:
这可能无法回答,因为这里可能有太多变量,但我想我会试一试,因为我总是在这里找到其他答案。我对 Rails 还是很陌生。
所以,我有一个账单模型/控制器/视图。我想创建一个新账单。我将编辑掉那些不应该很重要的东西,但如果需要它们,我可以添加它们——只是不想要一堵文字墙。
在路线中:
map.resources :bills
我在控制器中的新方法:
def new
@bill = Bill.new
@submit_txt = "Create"
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @bill }
end
end
我的表格:
<% form_for(@bill) do |f| %>
<%= f.error_messages %>
### form elements here, this all seems fine ####
<p>
<%= f.submit @submit_txt %>
</p>
<% end %>
我在控制器中的创建方法:
def create
is_weekly = false
is_monthly = false
@bill = current_user.recurring_bills.build(params[:bill])
@bill.year = @current_year
@errors = 'checking this out'
if @errors.blank?
logger.info "no errors, supposedly; going to save"
### do saving stuff here####
else
logger.info "errors not blank"
render :action => :new
end
end
由于某种原因,这总是呈现 /bills 而不是 /bills/new。它曾经有效,我不知道我做错了什么,但现在不是。我得到与渲染相同的响应:template => 'bills/new'。它会通过重定向转到正确的页面,但不会使用旧值填写表单。
日志:
Processing BillsController#create (for 127.0.0.1 at 2010-07-21 21:00:47) [POST]
Parameters: {"commit"=>"Create", "action"=>"create", "authenticity_token"=>"Kc7/iPKbfJBKHHVARuN7K6207tW6Jx4OUn7Xb4uSB8A=", "bill"=>{"name"=>"rent", "month"=>"", "amount"=>"200", "alternator"=>"odd", "day"=>"35", "frequency"=>"monthly", "weekday"=>""}, "controller"=>"bills"}
User Load (0.6ms) SELECT * FROM "users" WHERE ("users"."remember_token" = 'dd7082c56f5a252d14e4e68c528eb26551875c647f998c15d16a064cb075d63c') LIMIT 1
errors not blank
Rendering template within layouts/application
Rendering bills/new
Rendered bills/_form (14.5ms)
Rendered layouts/_stylesheets (3.3ms)
Rendered layouts/_header (5.7ms)
Rendered layouts/_footer (0.3ms)
Completed in 174ms (View: 30, DB: 1) | 200 OK [http://localhost/bills]
希望有人知道我做错了什么,或者我想我要重新开始了。
【问题讨论】:
-
my_form 是部分的,还是 new.html.erb?
-
对不起,是的,表单是部分的,我正在尝试在新方法和编辑方法中使用它。我会尝试我认为可能是您的下一个答案 - 将它从部分文件中取出并放入主文件中,看看它会做什么。
-
很好奇,问题出在哪一行:
Completed in 174ms (View: 30, DB: 1) | 200 OK [http://localhost/bills]?因为它似乎正在渲染正确的页面:Rendering bills/new,只是它不会运行new操作,只渲染页面。我是不是已经离开基地了? -
我想就像你说的那样 - 渲染正确的页面但不是正确的操作。这很奇怪,因为它确实再次调出表单(票据索引方法应该只是调出票据列表。)
-
看的更近一些(现在我已经退后了一点),似乎问题出在部分问题上,或者更确切地说是我为提交按钮设置的变量(我还需要在 create 方法中进行设置)。故事的寓意似乎是正在运行正确的操作,但 url 显示的是“bills”而不是“bills/new”;这是预期的结果吗?我从来没有注意到这一点。表格仍然没有用旧值填写,但这是我需要的表格,我可以在接下来的工作。感谢大家的帮助!
标签: ruby-on-rails ruby render