更新了Rails错误:PostsController #new中的SyntaxError

时间:2013-06-26 23:59:13

标签: ruby-on-rails ruby controller

我是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

1 个答案:

答案 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]作为属性,在我看来,您需要一些更明确的代码才能完成此操作可能正试图将所选项目保存到帖子的一个字段中。