我正在使用link_to
在我的Rails 3应用中创建一个对象。搜索为我提供了使用link_to
方法:post
的正确方法,但我想知道是否使用link_to
传递我的对象的名称值。这是我的链接:
<%= link_to "Todo text", {:controller => "profiles", :action => "create_inside", :method => :post}, :class => "button white" %>
我的profiles_controller.rb
:
def create_inside
@todo = Insidetodo.new
@todo.save!
if @todo.save
redirect_to @profile.todo, :notice => 'Todo successfully added.'
else
render :action => 'new'
end
end
我的todo.rb
模型:
class Todo < ActiveRecord::Base
has_and_belongs_to_many :profiles
validates :name, :presence => true
end
有没有办法将:name => "#{@user.profile.todotext}"
添加到link_to
,以便通过并保存?我不知道它是否正确创建,因为当我点击link_to
时,我收到验证错误 - Validation failed: Name can't be blank
。
答案 0 :(得分:1)
在name
link_to
<%= link_to "Todo text", {:controller => "profiles", :action => "create_inside", :name => "#{@user.profile.todotext}", :method => :post}, :class => "button white" %>
,控制器必须
def create_inside
@todo = Insidetodo.new(:name => params[:name])
if @todo.save
redirect_to @todo.goal, :notice => 'Todo successfully added.'
else
render :action => 'new'
end
end
但是link_to
只会在url中传递name参数(例如<a href="/profiles/create_inside?name=xxx">Todo text</a>
)。
如果您希望不在网址中发送该名称,您可能需要使用表单并使用提交按钮而不是链接,因为它表示操作而不是链接。
<%= form_tag(:controller => "profile", :action => "create_profile") do -%>
<%= hidden_field_tag :name, @user.profile.todotext %>
<%= submit_tag "Todo Text" %>
<% end -%>