所以我认为这很简单,但我还没想出来。
我有一个超级简单的form_for: <%= form_for @redemption do | f | %GT;
<%= f.text_field :code %>
<%= f.submit 'Submit' %>
<% end %>
用户输入代码并将其发送到兑换#create action
def create
@code = Code.find_by_id('6')
@redemption = @code.redemptions.find_or_create_by_code_id_and_user_id(@code.id, current_user.id)
if @redemption.save
redirect_to bands_url, :notice => "Redemption Successful."
else
redirect_to bands_url, :notice => "Could not redeem code"
end
end
此代码可以正常工作,但由于在那里对ID进行硬编码,显然无法生产。
我没有得到的部分是:如何通过表单发送Code.code并以某种方式获取该代码的.id。我知道如何将其传递给救赎......
想法?
答案 0 :(得分:1)
您的表单将通过params
。您提到“如何发送Code.code”这是否意味着您的redemption[:code]
与此Code.code相同,您从中获取Code.id? (在你的例子中为6)。
如果使用类似
的话def create
@code = Code.find_by_code(params[:redemption][:code]) # just to show you how to use it
@redemption = @code.redemptions.find_or_create_by_user_id(current_user.id) # that part looked redundant but i don't know what you're trying to do.
if @redemption.save
redirect_to bands_url, :notice => "Redemption Successful."
else
redirect_to bands_url, :notice => "Could not redeem code"
end
end