0

我是 ruby​​/rails 的新手。我正在尝试创建一个复选框表单,当用户提交他们选择的内容时(它将将该值发送到数据库(用于稍后比较和返回哈希值)。

我根据下面收到的反馈更新了这篇文章(谢谢)。 *现在我的代码正在执行以下操作(见下文): *

选择时出现以下错误:

PostsController#new /Users/user/rails_projects/SWORDMock_dev/app/controllers/posts_controller.rb:15 中的语法错误:未终止的正则表达式遇到文件结尾 /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 %>

我真的需要了解我在这里做错了什么。谢谢!!!

铁螳螂7x

4

1 回答 1

1

看起来 new.html.erb 文件缺少对“f”的引用。对于字段:

http://guides.rubyonrails.org/form_helpers.html#binding-a-form-to-an-object

另外作为旁注, show 方法出现在控制器中的 private 关键字之后,这可能应该移到 private 之上。

您还可以为复选框显式创建表单字段并使用 name = post[attribute_name_here] 作为复选框字段中的属性,在我看来,您需要一些更明确的代码来完成此操作,因为您可能正在尝试将所选项目保存到帖子的一个字段中。

于 2013-06-27T00:28:03.543 回答