部分形式没有创造新的价值RoR

时间:2013-07-25 06:49:05

标签: ruby-on-rails ruby

我是Ruby on Rails的新手。我的问题可能听起来很奇怪,但我被卡住了。我有一个表格创建在html页面上。我使用render partial,但此表单没有创建任何值。这是我的控制器代码。

Controller.rb

before_filter :signed_in_user, only: [:create, :destroy]


    def create
        @suppliers = current_user.suppliers.build(params[:supplier_name])
        if @suppliers.save
            flash[:success] = "Supplier Saved!"
            redirect_to 'suppliers/home'
        else
            render 'suppliers/home'
        end
     end

    def destroy
    end

    def home
        if signed_in?
            @supplier  = current_user.suppliers.build
            @feed_items = current_user.feed.paginate(page: params[:page])
        end
    end

我的 home.html.erb

 <div class="row">
    <aside class="span4">
      <section>
        <%= render 'suppliers/suppliers_form' %>
      </section>
    </aside>
    <div class="span8">
      <h3>Micropost Feed</h3>
      <%= render 'suppliers/feed_supplier' %>
    </div>
  </div>

我的 _supplier_form.html.erb

<%= form_for(@supplier)  do |f| %>

  <div>
    <%= f.text_field :supplier_name, placeholder: "Add new Supplier" %>
  </div>
  <%= f.submit "Add", class: "btn btn-large btn-primary" %>
<% end %>

我的 _feed_supplier.html.erb

<% if @feed_items.any? %>
  <ol class="microposts">
    <%= render partial: 'suppliers/feed_item', collection: @feed_items %>
  </ol>
  <%= will_paginate @feed_items %>
<% end %>

我的 _feed_item.html.erb

<li id="<%= feed_item.id %>">
  <span class="user">
    <%= link_to feed_item.user.name, feed_item.user %>
  </span>
  <span class="content"><%= feed_item.supplier_name %></span>
</li>

请指导我正确的方向,如果还有其他需要,那就请问。提前致谢

注意:所有提到的文件都在同一个文件夹中,即供应商。除了控制器文件

2 个答案:

答案 0 :(得分:2)

form_for @supplier

将创建一个像

这样的参数哈希
{ :supplier => { :supplier_name => '[some value you put in your form]' }}

所以创建动作应该使用

@suppliers = current_user.suppliers.build(params[:supplier])

没有参数[:supplier_name]。

答案 1 :(得分:1)

我认为对于部分内容,您不需要编写suppliers/*,例如:

<%= render 'suppliers/suppliers_form' %>

可能只是

<%= render 'suppliers_form' %>

不确定为什么会导致你的应用做它正在做的事情,但值得一试!