rails render partial 参数
<%= render :partial => 'account' %> 与 <%= render 'account' %>
1.render 输出父模板的内容,将渲染的内容,嵌入父模板。|
2.renderPartial 则不输出父模板的内容。只对本次渲染的局部内容,进行输出
其作用就是渲染指定页面,如<%= render 'account' %>
就是渲染当前目录下的 _account.html.erb文件
也可以渲染其它目录下的页面,用<%= render :partial => 'xx目录/yy目录/account' %>
- 传参
- 对于
<%= render :partial => "account", :locals => { :account => @buyer } %>
在_account.html.erb就可以直接访问 account 变量,不需要params[:account]。 - 如果不用:partial,就得把locals去掉,改为
<%= render 'account', :account => @buyer %>
更简单的方法:
<%= render :partial => "account", :object => @buyer %>
使用object方法很简单,就是把一个变量原名传递到partial里,传递@buyer到_account.erb的partial里变量名还是@buyer
参考链接
表单辅助方法
form_tag 辅助方法接受两个参数:提交表单的地址和选项散列。选项散列用于指明提交表单的方法,以及 HTML 选项,例如表单的 class 属性。
form_tag(controller: "people", action: "search", method: "get", class: "nifty_form")
# => '<form accept-charset="UTF-8" action="/people/search?method=get&class=nifty_form" method="post">'
在上面的代码中,method 和 class 选项的值会被添加到生成的 URL 地址的查询字符串中,不管我们是不是想要使用两个散列作为参数,Rails 都会把这些选项当作一个散列,即选项散列。
为了告诉 Rails 我们想要使用两个散列作为参数,我们可以把第一个散列放在大括号中,或者把两个散列都放在大括号中。这样就可以生成我们想要的 HTML 了:
form_tag({controller: "people", action: "search"}, method: "get", class: "nifty_form")
# => '<form accept-charset="UTF-8" action="/people/search" method="get" class="nifty_form">'
关于form_for
不像form_tag那样指定action链接跳转,而是通过实例跳转。
<%= form_for @person do |f| %>
<%= f.label :first_name %>:
<%= f.text_field :first_name %><br />
<%= f.label :last_name %>:
<%= f.text_field :last_name %><br />
<%= f.submit %>
<% end %>
上述内容即为:
<form action="/people" class="new_person" id="new_person" method="post">
<input name="authenticity_token" type="hidden" value="NrOp5bsjoLRuK8IW5+dQEYjKGUJDe7TQoZVvq95Wteg=" />
<label for="person_first_name">First name</label>:
<input id="person_first_name" name="person[first_name]" type="text" /><br />
<label for="person_last_name">Last name</label>:
<input id="person_last_name" name="person[last_name]" type="text" /><br />
<input name="commit" type="submit" value="Create Person" />
</form>
那么问题来了,那rails是怎么知道是要form_for提交是要跳转到编辑edit还是新增new呢?
我个人理解是:rails根据你跳到form_for页面之前是编辑还是新增来判断的,比如你点就编辑,链接跳转到了form_for这页面,那你在form_for编辑后的内容就是对应链接到编辑那去。而上面例子里是“new_person",说明是从新增那点击跳转过来的。
参考链接