我是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>
请指导我正确的方向,如果还有其他需要,那就请问。提前致谢
注意:所有提到的文件都在同一个文件夹中,即供应商。除了控制器文件
答案 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' %>
不确定为什么会导致你的应用做它正在做的事情,但值得一试!