0

我正在尝试编写一个 rails 应用程序,它不断轰炸我的 controller.rb 文件中的这一行代码:

posts GET    /posts(.:format)          posts#show

有人能帮我吗?

我正在使用 rails 3.2.13 运行 ruby​​ 1.9.3p429(2013-05-15 修订版 40747)[x86_64-darwin12.4.0]

更新

我取出了上面的代码行,现在我无法让 rails 发布所选复选框的值(标签)。我可以得到一些指导吗?

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

    def index
        @posts = Post.all
    end 

private
    def post_params
            params.require(:post).permit(:check_box, :label)
    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 %>

这是我的路线.rb:

SWORDMockDev::Application.routes.draw do

  resources :posts
  root to: "landing#index"

end

和我的 show.html.erb:

<p>
  <strong>Device:</strong>
  <%= @post.title %>
</p>

任何帮助是极大的赞赏!!

谢谢!!

铁螳螂7x

4

1 回答 1

1

代替:

def create
  @post = Post.new(params[:post].permit(:check_box, :label))
  @post.save
  redirect_to @post
end

你可以做:

def create
  @post = Post.new(post_params)
  @post.save
  redirect_to @post
end

标签不会在帖子中提交,只有复选框的值我建议您使用 pry https://github.com/pry/pry并在创建的控制器中执行以下操作:

def create
  binding.pry
  @post = Post.new(post_params)
  @post.save
  redirect_to @post
end

你可以看到参数中有什么,发生了什么。还要检查您的路线,看看是否一切正常:

rake routes
于 2013-06-27T02:49:02.973 回答