我是ruby / rails的新手。 我正在尝试创建一个复选框表单,当用户提交他们选择的内容时(它会将该值发送到数据库(以便稍后进行比较并返回哈希值)。
我根据以下收到的反馈更新了这篇文章(谢谢)。 * 现在我的代码正在执行以下操作(见下文): *
选择时,我收到以下错误:
PostsController中的SyntaxError #new /Users/user/rails_projects/SWORDMock_dev/app/controllers/posts_controller.rb:15:unterminated regexp遇到文件结尾/Users/user/rails_projects/SWORDMock_dev/app/controllers/posts_controller.rb:15:语法错误,意外$ end ,期待keyword_end
Rails.root:/ Users / user / rails_projects / SWORDMock_dev
应用程序跟踪|框架跟踪|完整追踪 请求
参数:
无
这是来自posts_controller.rb文件的代码:
class PostsController < ApplicationController
def new
end
def create
@post = Post.new(params[:post].permit(:check_box, :label))
@post.save
redirect_to @post
end
def show
@post = Post.find(params[:id])
end
posts GET /posts(.:format) posts#show
private
def post_params
params.require(:post).permit(:check_box, :label)
end
def index
@posts = Post.all
end
end
这是我的new.html.erb文件:
<h1>SWORD Mock Device Page</h1>
<%= form_for :post, url: posts_path do |f| %>
<p>
<h2>Android Phones</h2>
<%= f.check_box(:razr_max1) %>
<%= f.label(:razr_max1, "Droid Razr Max #1") %>
</p>
<p>
<%= f.check_box(:galaxyS2) %>
<%= f.label(:galaxyS2, "Samsung Galaxy S2") %>
</p>
<p>
<h2>Android Tablets</h2>
<%= f.check_box(:asusprime3) %>
<%= f.label(:asusprime3, "Asus Transormer Prime #3") %>
</p>
<p>
<%= f.check_box(:motoxoom1) %>
<%= f.label(:motoxoom1, "Motorola Xoom #1") %>
</p>
<p>
<%=f.submit "Select" %>
</p>
<% end %>
我真的需要了解我在这里做错了什么。 感谢!!!
ironmantis7x
答案 0 :(得分:1)
看起来new.html.erb文件缺少对“f”的引用。对于领域:
http://guides.rubyonrails.org/form_helpers.html#binding-a-form-to-an-object
另外作为旁注,show方法出现在你的控制器中的private关键字之后,这应该可以移到私有关键字之上。
您还可以显式创建复选框的表单字段,并在复选框字段中使用name = post [attribute_name_here]作为属性,在我看来,您需要一些更明确的代码才能完成此操作可能正试图将所选项目保存到帖子的一个字段中。