Ruby-on-rails形成_的奇特外观

Ruby-on-rails形成_的奇特外观,ruby-on-rails,Ruby On Rails,(唯一的区别是,在第二个版本中,我尝试使用parens()调用form_form,而在第一个示例中,我没有使用parens。)我知道我可以清理我这样做的方式,但这已被另一个线程覆盖 这项工作: <%= form_for (@quiz_attempt.blank? ? QuizAttempt.new(:patient_id => current_user.id, :started => Time.now.utc, :step_quiz_id => @course_step

(唯一的区别是,在第二个版本中,我尝试使用parens()调用form_form,而在第一个示例中,我没有使用parens。)我知道我可以清理我这样做的方式,但这已被另一个线程覆盖

这项工作:

<%= form_for (@quiz_attempt.blank? ?  QuizAttempt.new(:patient_id => current_user.id, :started => Time.now.utc, :step_quiz_id => @course_step.step.step_quiz.id) : @quiz_attempt), :url => submit_quiz_course_course_step_path(@course_step.course, @course_step) do |f| %>
current_user.id,:start=>Time.now.utc,:step_quick_id=>@course_step.step.step_quick.id:@quick_trust),:url=>submit_quick_course_course_step_路径(@course_step,@course_step)do | f |%>
但事实并非如此:(尝试将form_for with用作form_for()的函数)

current_user.id,:start=>Time.now.utc,:step_quick_id=>@course_step.step.step_quick.id:@quick_trunt),:url=>submit_quick_course_course_step_路径(@course_step,@course_step))do | f |%>
错误

ERROR:/Users/cmuench/rails_projects/infosurge/app/views/course_steps/show_quiz.html.erb:10: syntax error, unexpected ',', expecting ')'
...step_quiz.id) : @quiz_attempt), :url => submit_quiz_course_c...
...                               ^
/Users/cmuench/rails_projects/infosurge/app/views/course_steps/show_quiz.html.erb:10: syntax error, unexpected ')', expecting keyword_end
...rse_step.course, @course_step)) do |f| @output_buffer.safe_c...
...                               ^
/Users/cmuench/rails_projects/infosurge/app/views/course_steps/show_quiz.html.erb:27: syntax error, unexpected keyword_ensure, expecting $end
Extracted source (around line #10):

7:     <p><%= @course_step.step.step_quiz.instructions %> </p>
8:   </div>
9: <div id="Quiz">
10:     <%= form_for ((@quiz_attempt.blank? ?  QuizAttempt.new(:patient_id => current_user.id, :started => Time.now.utc, :step_quiz_id => @course_step.step.step_quiz.id) : @quiz_attempt), :url => submit_quiz_course_course_step_path(@course_step.course, @course_step)) do |f| %>
11:     <%= render :partial => 'shared/error_messages', :object => f.object %>
12:         <% @course_step.step.step_quiz.step_quiz_questions.each do |quiz_question| %>
13:             <h3><%= quiz_question.value %></h3>
Trace of template inclusion: app/views/course_steps/show_quiz.html.erb
ERROR:/Users/cmuench/rails_projects/infosurge/app/views/course_steps/show_quick.html.erb:10:语法错误,意外',',预期''
…步骤\u quick.id):@quick\u trunt),:url=>提交\u quick\u课程\u c。。。
...                               ^
/Users/cmuench/rails_projects/infosurge/app/views/course_steps/show_quick.html.erb:10:语法错误,意外“),应为关键字“end”
…rse|u step.course,@course|u step))do | f |@output|u buffer.safe|c。。。
...                               ^
/Users/cmuench/rails\u projects/infosurge/app/views/course\u steps/show\u quick.html.erb:27:语法错误,意外关键字\u sure,应为$end
提取的源(第10行附近):
7:

8: 9: 10:current_user.id,:start=>Time.now.utc,:step_quick_id=>@course_step.step.step_quick.id:@quick_trunt),:url=>提交_quick_course_course_step_路径(@course_step.course,@course_step))do | f |%> 11:'共享/错误消息',:object=>f.object%> 12: 13: 模板包含跟踪:app/views/course\u steps/show\u quick.html.erb
我不知道为什么解析器无法识别您试图执行的操作

与其尝试映射ruby解析器的所有复杂之处,为什么不尝试使代码可读

最简单的方法可能是使用
| |=
运算符,并将此逻辑移到控制器中

比较第一个示例的扩展形式:

Controller: 

 Not Shown

View:

<%= form_for (
    (@quiz_attempt.blank? ?  
      QuizAttempt.new(
        :patient_id => current_user.id, 
        :started => Time.now.utc, 
        :step_quiz_id => @course_step.step.step_quiz.id) : 
      @quiz_attempt
    ),
  :url => submit_quiz_course_course_step_path(@course_step.course, @course_step)
             ) do |f| %>
控制器:
未显示
视图:
当前_user.id,
:started=>Time.now.utc,
:step\u quick\u id=>@course\u step.step.step\u quick.id):
@小测验
),
:url=>提交测验课程步骤路径(@course\u step.course,@course\u step)
)do | f |%>
致:

控制器:
#... 相关行动接近尾声
@测验| | |=QuizAttempt.new(:patient_id=>current_user.id,
:started=>Time.now.utc,
:step\u quick\u id=>@course\u step.step.step\u quick.id)
视图:
提交测验课程步骤路径(@course\u step.course,@course\u step)do | f |%>
这样,您就可以使用无帕伦斯风格,而不会让混乱的
?:
位堵塞一切

希望有帮助


*顺便说一句,以下是:

我认为出了什么问题

form\u for()
不一定与
form\u for()
相同,因此可能会混淆您是否要说

使用
的结果调用
表单#(@quick\u trunt,:url=>url)#这是无效语法


“用参数调用
form_
(@quick\u-trunt,{:url=>url})#这就是真正的参数的样子

这几乎完全是你上一个问题的翻版,任何合适的答案都会复制你在另一个问题中给出的答案。
Controller: 

 Not Shown

View:

<%= form_for (
    (@quiz_attempt.blank? ?  
      QuizAttempt.new(
        :patient_id => current_user.id, 
        :started => Time.now.utc, 
        :step_quiz_id => @course_step.step.step_quiz.id) : 
      @quiz_attempt
    ),
  :url => submit_quiz_course_course_step_path(@course_step.course, @course_step)
             ) do |f| %>
Controller:
#... near the end of the relevant action
@quiz_attempt ||= QuizAttempt.new(:patient_id => current_user.id, 
                                  :started => Time.now.utc, 
                                 :step_quiz_id => @course_step.step.step_quiz.id)

View:

<%= form_for @quiz_attempt, :url => 
submit_quiz_course_course_step_path(@course_step.course, @course_step) do |f| %>