标签: actionview

具有复选框的嵌套对象 - 即使使用accepts_nested_attributes_for也可以进行质量分配?

我认为应该有一个简单的解决方案,因为Rails 2.3具有这种新奇的嵌套表单功能.基本上我想创建或更新用户并同时为他们分配角色.

看起来我正在做的一切正确,但我收到错误警告:无法批量分配这些受保护的属性:roles_attrributes.

我甚至尝试将视图更改为用户[permissions_attrributes] [role_id],因为我认为连接表可能会让Rails感到困惑.

无论如何,关于这应该如何实际工作的任何建议?

模型

class User < ActiveRecord::Base

  has_many :permissions
  has_many :roles, :through => :permissions

  accepts_nested_attributes_for :roles
  accepts_nested_attributes_for :permissions
end
Run Code Online (Sandbox Code Playgroud)

从视图中摘录(注意我试过并且没有得到fields_for来生成我想要的东西,也许那是我的问题?)

<% for role in Role.all %>
 <%= check_box_tag( "user[roles_attrributes][id]",role.id) %>
 <%= role.rolename %>
 <br/>
<% end %>
Run Code Online (Sandbox Code Playgroud)

遇到的参数似乎是正确的:

    {"user"=>{"password_confirmation"=>"[FILTERED]", 
"roles_attrributes"=>{"id"=>"2"}, ...
Run Code Online (Sandbox Code Playgroud)

解决方案我错误拼写的组合,不使用attr_accessible,需要访问permissions_attributes,并且表单稍微关闭.

模型:

has_many :permissions, :dependent => :destroy
has_many :roles, :through => :permissions
accepts_nested_attributes_for :permissions
attr_accessible :permissions_attributes
Run Code Online (Sandbox Code Playgroud)

视图:

    <%  Role.all(:order => "rolename ASC").each_with_index do |role,idx| %>
    <%= check_box_tag( "user[permissions_attributes][#{idx}][role_id]",role.id) %>
    <%= role.rolename %> …
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails associations actionview

7
推荐指数
2
解决办法
6480
查看次数

Rails distance_of_time_in_words返回"en,about_x_hours"

我有一个奇怪的问题,希望有人知道问题是什么......

使用distance_of_time_in_words(以及因此time_ago_in_words)不返回实际时间距离.相反,它返回的内容包括"en,about_x_hours"或"en,x_minutes".

模式是正确的,如:

time_ago_in_words(50.minutes.ago) => "en, about_x_hours"
time_ago_in_words(3.minutes.ago) => "en, x_minutes"
Run Code Online (Sandbox Code Playgroud)

但是,为什么它在显示"x"而不是实际数字,"_"而不是空格,以及"en",在所有这些的开头?!

ruby time ruby-on-rails actionview

7
推荐指数
2
解决办法
6467
查看次数

捕获Rails视图块时出现差异

我有一个带有两个块的ERB视图:

<%= test_h1 do %>
  <%= 'test1' %>
<% end -%>

<%= test_h2 do %>
  <%= 'test2' %>
<% end -%>
Run Code Online (Sandbox Code Playgroud)

where test_h1test_h2是类似的帮助器,但是一个在辅助文件中定义,而另一个helper_method在控制器中定义:

module TestHelper
  def test_h1(&block)
    link_to '/url' do
      capture(&block)
    end
  end
end

class TestController < ApplicationController
  helper_method :test_h2

  def test_h2(&block)
    helpers.link_to '/url' do
      helpers.capture(&block)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

test_h1生成预期结果并首先test_h2渲染内部模板块:

<a href="/url">test1</a>

test2<a href="/url"></a>
Run Code Online (Sandbox Code Playgroud)

为什么?什么是惯用的写作方式test_h2

ruby-on-rails actionview ruby-on-rails-5

7
推荐指数
1
解决办法
143
查看次数

一个控制器,普通用户和管理员的不同视图

在我的应用程序中,我有一个"用户"模型.每个用户可以拥有多个(电子邮件)地址,这些地址在"地址"模型中定义:

Class User < ActiveRecord::Base
  has_many :addresses


  def is_authorized(op)
     # returns true or false
  end

  def is_owned_by(user)
     # returns true or false
  end
end

Class Address < ActiveRecord::Base
  belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

在AddressController类中,当前登录的用户可在"@user"实例变量中使用.控制器阻止普通用户编辑,删除,查看等不属于他们的地址 - 但他允许管理用户编辑这些地址.如果当前登录的用户正在执行正常或超级用户操作,则AddressController类可以询问AddressModel.

这一切都运行良好,数据库更新按预期进行,但是,我真的希望根据操作模式使用不同的HTML视图.我只能想到两种方法来实现这一目标:

  1. 使AddressController类中的操作模式(正常/特权)已知(使用实例变量,例如@privileged)并在视图中使用"if"语句.
  2. 在地址控制器中使用类似"after_filter"的内容来呈现不同的布局.

如果可以在两个完全不同的布局中显示执行单个控制器的结果,根据它的操作模式,有什么好的方法可以实现呢?

在此先感谢Stefan

ruby-on-rails actionview actioncontroller

6
推荐指数
2
解决办法
7403
查看次数

我怎样才能让rails无法将转义引号呈现为\"

在我的布局中我有

<% @current_user.popups.each do |p| %>
  <% content_for :script do %>
    <%= "$(document).ready ( function() { $.jGrowl(\"#{p.message}\", { sticky: true }) });" %>
  <% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

然后在我的脚本部分

<%= yield :script %>
Run Code Online (Sandbox Code Playgroud)

问题是,这会呈现转义的报价,\&quot;而javascript不喜欢这样.

我怎么能阻止这种情况发生?或者还有另一种方法吗?我不能使用单引号,因为我想在消息中有一些html.我很感激任何帮助.

javascript ruby-on-rails actionview

6
推荐指数
1
解决办法
3940
查看次数

如何从Rails实例变量呈现HTML?

我有一个我传递给视图的intstance变量@body.

@body 是一个带有html的字符串.

<%= @body %>呈现字符串,而不是html.如何在字符串中呈现html?

可能?

提前致谢!

ruby-on-rails actionview

6
推荐指数
2
解决办法
5077
查看次数

加载页面后自动加载javascript函数

我是Rails的新手,现在还不太了解资产管道…

我想让

views/product/product.js 
Run Code Online (Sandbox Code Playgroud)

之后自动射击

views/product/index.html.erb 
Run Code Online (Sandbox Code Playgroud)

由于DRY原因而被渲染。

加载任何或部分model.erb文件后,资产管道中是否有一个地方调用model.js文件?

我知道如何手动操作,并删除了

app/assets/javascripts/product.js
Run Code Online (Sandbox Code Playgroud)

但是然后我必须在新的show中调用doSomethingAfterPageload()方法。删除等。甚至更好,如果这也适用于部分。

javascript ruby-on-rails actionview asset-pipeline

6
推荐指数
1
解决办法
4754
查看次数

Android ActionBar自定义操作视图工具提示

我有一个使用SupportActionBar的应用程序.我是一个行动的自定义视图.

问题是,当我长按时,默认操作会显示工具提示,但我的自定义操作不会.

所以这是默认操作(如您所见,有一个工具提示): 带有工具提示的操作项

这是我的自定义操作(没有这个工具提示:/): 在此输入图像描述

这些2的xml:

    <menu
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:custom="http://schemas.android.com/apk/res-auto">

        <item
            android:visible="false"
            android:title="Clear history"
            android:id="@+id/action_clear_history"
            custom:showAsAction="always"
            android:icon="@drawable/ic_action_trash" />
        <item
            android:title="Open chat"
            android:id="@+id/action_chat"
            custom:showAsAction="always"
            custom:actionLayout="@layout/ab_chat" />
    </menu>
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

android actionview android-actionbar android-actionbar-compat

6
推荐指数
2
解决办法
2560
查看次数

如何使用lookup_context将此视图视为DRY?

对于初学者来说,这是我试图复制的观点:

成绩布局的截图

这是来自该布局的HTML(无论如何,您可以从SAT部分推断其余部分):

<table class="table table-hover table-bordered">
                        <thead>
                        <td colspan="2" class="text-center">
                          <strong>SAT</strong>
                        </td>
                        <tr>
                            <th>Subject</th>
                            <th>Grade</th>
                        </tr>
                        </thead>
                        <tbody>
                        <tr>
                            <td>Reading</td>
                            <td>900</td>
                        </tr>
                        <tr>
                            <td>Math</td>
                            <td>700</td>
                        </tr>
                        <tr>
                            <td>Writing</td>
                            <td>800</td>
                        </tr>
                        <tr>
                            <td><strong>Total</strong></td>
                            <td><strong>2,400</strong></td>
                        </tr>
                        </tbody>
Run Code Online (Sandbox Code Playgroud)

这就是我的Grade.rb模型:

# == Schema Information
#
# Table name: grades
#
#  id         :integer          not null, primary key
#  subject    :string
#  result     :string
#  grade_type :integer
#  profile_id :integer
#  created_at :datetime         not null
#  updated_at :datetime         not null
#

class Grade …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails erb actionview ruby-on-rails-5

6
推荐指数
1
解决办法
538
查看次数

Rails 5:form_for vs form_with

Rails 5引入了新的表单辅助方法form_with.

form_for是如何不同的,何时更适合使用?

actionview ruby-on-rails-5

6
推荐指数
2
解决办法
2507
查看次数