初学者在这里有一些开发经验。
我有一个有多个型号的应用程序,我已经设法解决所有问题,但我被困在这里。
我有一个名为CartEntries的模型
class CartEntry < ActiveRecord::Base
acts_as_paranoid
belongs_to :cart
belongs_to :sign
使用Cart Entry控制器中的create方法
def create
@entry = @cart.entries.create(entry_params)
if @entry.save
flash[:notice] = translate 'flash.notice'
else
flash[:error] = translate 'flash.error'
end
support_ajax_flashes!
respond_to do |format|
format.html # renders view
format.json { render json: @entry }
end
end
带有静态符号的模型符号在数据库中输入,没有创建方法。
class Sign < ActiveRecord::Base
has_many :cart_entries
accepts_nested_attributes_for :cart_entries
从Sign的视图中,我初始化CartEntry的新实例,并在点击链接后生成新的购物车条目,生成通知。
<% @entry = CartEntry.new(sign: @sign)%>
<%= link_to t('.add_to_cart'), user_cart_entries_path(:entry => @entry.attributes),method: :post, remote: true, "data-type" => :json%>
购物车条目还有另一个名为计数的字段,默认值为1. 我正在寻找一种方法供用户在文本字段中输入此编号并在创建购物车条目时,传递计数用户输入而不是默认值1。 我尝试过什么都传递默认值。 而
<% @entry = CartEntry.new(sign: @sign, count: 5)%>
技巧是否正确,并将5作为值传递,但我希望用户输入此数字,因为它显然是变量。
虽然我明白了
<% @entry = CartEntry.new(sign: @sign)%>
在页面加载时初始化输入对象,我必须移动它,我问你善良的人,在哪里?
更新
Entry Params:
private
def entry_params
params.require(:entry).permit(:sign_id, :count)
end
答案 0 :(得分:1)
从你的问题中以相反的顺序回答:
初始化新的CartEntry对象可能应该在控制器的new
操作中。 Rails控制器通常同时将new
和create
,new
绑定到呈现表单以接收输入,create
作为与“提交”#39相关联的操作;按钮。您的new
操作通常类似于:
def new
@entry = CartEntry.new(sign: @sign)
end
您提醒用户输入数据的视图应命名为new.html.erb并在其中包含该表单。
为了从表单获取数据到您的创建方法,我认为你已经走了一半。如果您移动了您给出的示例:
<% @entry = CartEntry.new(sign: @sign, count: 5)%>
到控制器中的create
操作,它将是
@entry = CartEntry.new(sign: @sign, count: params[:count])
@entry.save
记住&#39; params&#39;只是一个包含表单输入数据的哈希。
希望有所帮助!